rabbit算法java实现_java – 可以使用自定义算法调度消息,而不是使用RabbitMQ进行循环?...

我正在使用RabbitMQ的循环功能来在多个消费者之间发送消息,但是一次只能收到一个消息.

我的问题是我的消息代表任务,我想在我的消费者身上有本地会话(状态).我事先知道哪些消息属于哪个会话,但是我不知道使用我指定的算法使RabbitMQ向消费者发送什么是最好的方法(或者有什么方法?).

我不想写我自己的编排服务,因为它将成为一个瓶颈,我不希望我的制作人知道哪个消费者会收到他们的消息,因为我会失去使用兔子的解耦.

有没有办法使RabbitMQ基于预定义的算法/规则而不是循环方式向消费者发送消息?

澄清:我用不同语言编写的几个微服务器,每个服务都有自己的工作.我们之间使用protobuf消息进行通信.我给每个新消息一个UUID.如果消费者收到消息,它可以从中创建一个响应消息(这可能不是正确的术语,因为生产者和消费者被解耦,并且他们彼此不了解),并且该UUID被复制到新消息.这形成一个数据转换流水线,该“进程”由UUID(processId)标识.我的问题是,有可能我有多个工作的消费者,如果以前看到它,我需要一个工作者坚持一个UUID.我有这个需要,因为

>每个进程可能有本地状态

>进程完成后,我想清理本地状态

>微服务器可能会收到同一进程的多条消息,我需要区分哪个消息属于哪个进程

由于RabbitMQ在使用循环的工作人员之间分配任务,因此我无法强制我的进程坚持工作.我有几个注意事项:

生产者与消费者脱钩,所以直接信息不是一个选择

>工作人员的数量不是常数(有一个负载平衡器可能会启动一个工作的新实例)

如果有一个解决方案不涉及更改循环算法,并且不会破坏我的约束,那也是可以的!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值