我有一个生产者和一个消费者的消息队列用于异步请求,并且在应用一些超时策略的情况下保证了交付。订购这些消息并不合理。每条消息都是彼此隔离的,并拥有自己的业务场景。因此,我不需要在消息队列中进行任何排序。但问题是队列被第一个无法传递的消息阻止。其他消息是正确的,并准备以正确的方式处理,但他们必须等待"坏"要传递的信息。
Java和JMS在队列客户端使用Spring。
是否可以在没有任何订购的情况下制作ActiveMQ队列,但是每条消息都有单独的重新传递超时?
答案 0 :(得分:2)
解决此问题的最佳方法是在一组队列中使用每个消息类型的队列或一些其他类似的消息逻辑分区。
JMS队列的功能与名称完全相同,先进先出。有一个选项可以使用消息优先级来允许消息跳转,但是根据队列深度等有很多限制。
你最好将你的域分成一些逻辑的队列,并为每个队列消费。
答案 1 :(得分:0)
您是否处于“FIFO”情景中?即必须保留处理顺序?如果没有,请启动多个使用者(例如,在WebSphere中为多个MDB实例设置激活规范上每个服务器的“从属”数)和/或为您的消息分配不同的JMSpriority以首先处理“更紧急”的消息< / p>