我对JMS比较陌生,最近我一直在阅读它。
我打算设计一个可以执行以下操作的网络应用程序:
用户登录系统并向主题发布消息/问题。
所有订阅该主题的用户都会阅读该消息/问题并回复该帖子。
发起人会审核所有答案并选出最佳答案。
发起人现在只回复他/她选择回答的用户,并要求进一步澄清。
响应者收到消息并回复。
因此,一旦发起人选择了答案,JMS现在就成了请求/回复设计。
我的问题是:
是否可以使用setJmsReplyTo(tempQueue)发布主题?
请求/回复方法可以是异步吗?
拥有每个用户队列是个好主意吗?
这些问题对于这里的一些专家来说可能有些愚蠢,但请记住我还在学习。
感谢。
答案 0 :(得分:1)
Is it possible to publish to a topic with setJmsReplyTo(tempQueue)?
你应该可以,但我不是百分之百确定。顺便说一下,我搜索了我的书签,发现这个链接应该解释你要使用JMS建立一个请求/响应系统需要做什么
http://activemq.apache.org/how-should-i-implement-request-response-with-jms.html
Can request/reply approach be async?
消息侦听器是一个对象,充当消息的异步事件处理程序。所以你接近请求/回复,如果使用JMS,默认是异步。
http://docs.oracle.com/javaee/1.3/jms/tutorial/1_3_1-fcs/doc/prog_model.html#1023398
Is it a good idea to have per user queue?
我不知道您希望拥有多少用户,但每个用户拥有一个队列并不是处理邮件的好方法。我有一个类似于你的问题,但我们为每个宏区域使用了一个队列,我们构建了消息来保存发送它的用户的信息,以便稍后存储信息并用它来进一步分析。
答案 1 :(得分:0)
JMSReplyTo只是一个消息头,没有别的。因此,可以在此标题中发布包含具有特定值的主题的消息。
当然!如果您想创建一个可扩展的系统,您应该使用async而不是阻止aproach来设计事件驱动的系统。 MessageListener可以帮助您。
它特定于JMS代理实现。如果队列创建非常便宜,那么这种解决方案就没有问题。