The Wayback Machine - https://web.archive.org/web/20200601124026/https://github.com/alibaba/spring-cloud-alibaba/issues/791
Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

spring-cloud-starter-stream-rocketmq期望支持阿里云RocketMQ定时消息(不是延时消息) #791

Open
jojozoo opened this issue Jul 31, 2019 · 22 comments

Comments

@jojozoo
Copy link

@jojozoo jojozoo commented Jul 31, 2019

现象:使用ONS连接阿里云RocketMq,可支持阿里云RocketMQ定时消息(不是延时消息) ,使用rocketmq stream binder则不能支持,只能支持到延时消息 。

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Jul 31, 2019

是支持的 头信息传入 [__STARTDELIVERTIME]: 指定时间

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Jul 31, 2019

DefaultMQProducerImpl 的 739行... 不知道为啥官方不在加个header的key~

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

__STARTDELIVERTIME 设过了然而不起作用

@fangjian0423
Copy link
Member

@fangjian0423 fangjian0423 commented Jul 31, 2019

RocketMQ Binder 现在只支持 DELAY 这个 header

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

DELAY 这个header 在开源的RocketMq是可以用 但是在阿里云RocketMq 也是起不了作用!

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

期望尽早支持这个特性

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Jul 31, 2019

@jojozoo 开源是Delay 传入等级,阿里云是__STARTDELIVERTIME 传入指定时间,阿里云上面必须建延迟topic,不是普通类型。。 目前正在用。。。

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

可以发个示例代码?

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

    Message<String> msgBody = MessageBuilder
            .withPayload("12345")
            .setHeader("__STARTDELIVERTIME", "2019-07-31 15:20:01")
            .build();
@jojozoo
Copy link
Author

@jojozoo jojozoo commented Jul 31, 2019

@Nitsuya 可以发个示例代码?

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Jul 31, 2019

@jojozoo 就是你发的这样,走的topic要走阿里云的延迟topic。 我用的 版本0.9.0

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Aug 1, 2019

我这边死活不成功 怎么设置都是死活延时1分30秒左右

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Aug 5, 2019

@fangjian0423 能做个官方demo?

@fangjian0423
Copy link
Member

@fangjian0423 fangjian0423 commented Aug 6, 2019

@jojozoo

image

image

image

producer code snipper:

Message msg = MessageBuilder.withPayload("simple msg")
				.setHeader("DELAY", 3).build();
source.output().send(msg);
System.out.println("msg send at " + DateFormatUtils
		.format(System.currentTimeMillis(), "yyyy-MM-dd HH:mm:ss"));

configurations:

spring.cloud.stream.rocketmq.binder.name-server=nameServerInAliwareMQ
spring.cloud.stream.rocketmq.binder.access-key=ak
spring.cloud.stream.rocketmq.binder.secret-key=sk

spring.cloud.stream.bindings.output.destination=instanceId%test-topic
spring.cloud.stream.bindings.output.content-type=application/json
spring.cloud.stream.rocketmq.bindings.output.producer.sync=true
@fangjian0423
Copy link
Member

@fangjian0423 fangjian0423 commented Aug 7, 2019

need __STARTDELIVERTIME header

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Aug 7, 2019

@jojozoo
Copy link
Author

@jojozoo jojozoo commented Aug 7, 2019

need __STARTDELIVERTIME header

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Aug 8, 2019

@jojozoo
这里不加东西啊。
你发的这个链接是 752行,开源版本是写死的。。
我的意思是为啥开源版本不加个header,干嘛在里面写死的。

正确的例子是这样的:
`
setHeader("__STARTDELIVERTIME", new Date().getTime() + 你要延迟的毫秒)
`
@jojozoo
Copy link
Author

@jojozoo jojozoo commented Aug 10, 2019

@Nitsuya 我这边测试成功了 就是云上控制台上消息查询不出了

@Nitsuya
Copy link

@Nitsuya Nitsuya commented Aug 10, 2019

@shandianzhao
Copy link

@shandianzhao shandianzhao commented Nov 20, 2019

@fangjian0423 按照你的配置使用output默认Source是可以的。但是自定义source跟源码sync源码未赋值
比如:spring.cloud.stream.rocketmq.bindings.expresstimeout.producer.sync=true

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.