mq延迟消息

搭建延时场景。

配置插件。rabbitmq需要安装延迟消息的专用插件。

配置关键属性-exchange-type。

在生产者发送消息给rabbitmq的时候,做点手脚。在Message header中设置延迟时间。

在界面上查看延迟消息的特殊标签。

接口传递body和延迟的时间,以秒为单位。

header中设置x-delay(居然不是x-man,幽默),正数*1000,时间过后,消息才会送到消费者那里。

把String的body设置进Messagebean并传给生产者。直接导致消费者的形式参数从Object(最开始,是String类型的body用Object接收,现在变成用Object接收String)变成MessageBean。

output+input becomes fake self-definition topic,truely topic appears in configration file.

inject self-definition topic into container.

binding input with listener method,which makes method contacting with fake topic.

消费者信道、生产者信道、虚假的话题、真实的话题、监听方法与消费者信道绑定使得方法成为了消费者。生产者往生产者信道发送一条消息,消费者接收话题中的消息。

生产者和消费者的信道是多对多的关系。比如三个节点,每个节点都有一个生产者和一个消费者。消息从一个生产者信道流到多个(分组了)或全部消费者(没分组,每个信道都有份)信道。

考虑一个节点过于简单,往集群方向考虑(同一个application,仅仅只是端口不一样,多个应用都开起来。)

在配置文件中有一个重定向的操作,destination,将prod和consu的信道重定向到另外一个名字的topic,delayed-topic,不知道delayed-topic是自定义的还是队列里面设置的定死的,总之,delayed-topic就是真实的topic,topic指的就是信道的集合。还有延迟消息不是每个中间件都有,所以画龙点睛之作那里也写一个rabbit。

声明一个queue的exchange类型(声明延迟队列的画龙点睛之笔)。

并不是所有的中间件都支持延迟消息,所以要指明中间件为rabbit。

出现在界面中exchange中的delayed-topic(Name)和我在配置文件中设置的真实topic保持一致额。type是x-delayed-message(这个type是叫做信道类型。如果是普通topic那么type就是topic,如果是延迟消息那么type就是x-delayed-message)

如果你在项目中设置的延迟消息不生效怎么办,第一件事就是到界面看name、type和feature(dm(delayed message))是否存在。如果feature中没有dm的话,可能创建这个topic的时候参数给错了。

在queue中所有message的数量。

post请求方式的参数用@RequestParam修饰了,除了用params外还可以用x-www-form那个。

调用接口send一条message之后的指定时间之后,消费者才会消费那条消息,是消息滞留在生产者信道了吧。

  • 5
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值