我见过的例子似乎支持几个用例:
- 点对点 - 单个发布者到单个消费者,从发布者到消费者的单向通信
- 发布/订阅 - 发布者到多个消费者,从发布者到消费者的单向通信
- 请求/响应 - 单个发布者到单个消费者,双向通信但阻塞
我正在寻找的是双向异步消息传递。例如我想做以下事情
Publisher: "Hello world" to consumer
Consumer: Process "Hello world"
Wait 5 minutes
Consumer: "Hello publisher" to publisher
Publisher: Process "Hello publisher"
API 是否支持上述用例?或者我需要同时作为发布者和消费者实现所有内容?
最佳答案
您的最佳选择很可能是使用 2 个队列。每一侧的同一对象可以是一个队列上的生产者和另一队列上的消费者。那么你就有了:
Object1 "Hello world" -> queueDirection1 -> Object2 processes "hello world"
Object2 "Hello world" -> queueDirection2 -> Object1 processes "hello world"
现在这是完全异步的,队列之间没有计时要求。
我认为任何具有单个队列或单个主题的配置都会带来意外阻塞或可能自行接收消息的风险。请务必考虑如果消息速率增加或处理时间增加系统将如何表现。
关于java - JMS API 是否支持异步双向消息传递?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8306460/