java - JMS API 是否支持异步双向消息传递?

标签 java jms

我见过的例子似乎支持几个用例:

  1. 点对点 - 单个发布者到单个消费者,从发布者到消费者的单向通信
  2. 发布/订阅 - 发布者到多个消费者,从发布者到消费者的单向通信
  3. 请求/响应 - 单个发布者到单个消费者,双向通信但阻塞

我正在寻找的是双向异步消息传递。例如我想做以下事情

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/

相关文章:

java - 为什么 Java 编译器会提示局部变量没有在这里初始化?

java GridLayout 组件大小

java - JaperReport maven Pom.xml 未创建.jasper 文件

java - 是否可以使用 Spring 配置在运行时设置 JMS 监听器目标

java - OS X 上的简单 JMS 客户端

ssl - 将 activemq 客户端配置为仅使用 ssl 进行加密

java - Hibernate (lucene) 搜索中的 And 运算符

java - 从 SQL 数据库中删除条目后出现空指针异常

java - 如何使用计时器重新安排任务?

java - JMS 接口(interface)和实现