我有一个webapp,可以从外部应用程序获取和显示数据,只能通过消息传递(JMS)访问.
因此,如果用户在浏览器上提交请求,则相同的HTTP请求线程必须与Messaging系统(MQ Series)交互,以便相同的请求线程可以显示从Messaging System接收的数据.
我可以在这里使用一种模式吗?我在网上看到了一些模糊的引用,它们以这种方式使用"Correlation ID":
Msg m = new TextMsg("findDataXYZ");
String cr_id = m.setCorrelationID(id);
sendQueue.send(m).
// now start listening to the Queue for a msg that bears that specific cr_id
Response r = receiverQueue.receive(cr_id);
Run Code Online (Sandbox Code Playgroud)
那里有更好的东西吗?我发现其他模式期望响应是异步接收的..这对我来说不是一个选项,因为我必须在同一个HTTP请求上发回响应.
任何人都可以指导我,使用c#.net连接ibm websphere mq,原因是我试图将消息推送到MQ,请使用c#.net给我建议连接
在消耗来自队列的消息时,相对于队列深度n,应用JMS选择器的算法时间复杂度是多少?特别是,每次读取是否为线性(O(n))?它是依赖于实现的(在JMS提供程序上),是否取决于请求的字段?
(如果依赖于实现,我对Websphere MQ和Solace的行为特别感兴趣,但我欢迎处理任何特定JMS提供程序的答案,特别是如果您有描述复杂性的文档的链接!).
动机:每条消息都有两个属性:a invocationID和a batchName.批处理包含多个调用.客户希望以两种方式之一消费消息; 无论是通过invocationID还是通过batchName.在生成消息时,我不知道它们将被消耗的方法.
这可以通过选择器实现:
invocationID=42
Run Code Online (Sandbox Code Playgroud)
要么
batchName="reconciliation"
Run Code Online (Sandbox Code Playgroud)
...我可以通过使用相关ID而不是自定义属性来加快其中一个,但我担心另一个会保持缓慢.
MQRC_UNEXPECTED_ERROR当我尝试连接到执行组上部署的消息流时,我收到了WebSphere MQ Reason代码2195 .有人可以告诉我这个原因代码究竟是什么意思?队列管理器,代理,执行组......一切都正常运行,端口也是开放的.我没有在网上得到任何有价值的东西.请指教.
我正在本地测试WebSphere以用于开发目的,现在我想转移到新PC.但我不记得我是如何摆脱标题中的错误.我知道自从引入MQ 7.1如何禁用安全性以来,有大量关于此错误的帖子.我记得上次我做了runmqsc.exe QM_name - > ALTER CHLAUTH(DISABLED).但它不再工作了?!我还需要改变什么,以便任何人都可以连接到队列?
> DIS QMGR CHLAUTH
> 2 : DIS QMGR CHLAUTH AMQ8408: Display Queue Manager details.
> QMNAME(QueueManager1) CHLAUTH(DISABLED)
Run Code Online (Sandbox Code Playgroud)
谢谢.
JMS主题和JMS选择器是完全不同的概念,但它们都可以被消费者使用以仅获取消息的子集.
在PubSub场景中,使用以下方法过滤消息的专业人员和骗子是什么?
选项1)在单个主题中发布所有内容,使用者使用JMS选择器
选项2)订阅者订阅一个或多个主题.
例如:
我正在发布客户端数据消息,订阅者可能只想获得特定类型的客户端.客户端类型在不同的属性中定义,如'ClientGroup''ClientSource''ClientOrgUnit''ClientSize'等
我该怎么办:
1)为每个客户端类型创建一个不同的主题
或
2)在主题上并让每个类型都在JMS属性中并让订阅者使用选择器?
谢谢
我正在考虑系统将通知多个消费者有关一群物体发生的事件.每个订阅者应该能够订阅发生在零个或多个对象上的事件,多个订阅者应该能够接收有关发生在单个对象上的事件的信息.
我认为在这种情况下,某些消息排队系统是合适的,但我不知道如何处理我将拥有数百万个对象的事实 - 对每个对象使用单独的主题听起来不太好[或者是它正好?].
你能否建议我应该采取的方法,甚至可能是一些合理的开源消息排队系统?
更多细节:
在此先感谢您的反馈,并抱歉有些模糊的问题!
WebSphere Application Server 8.0在免费的开发人员版本中可用,还有一个可用于WebSphere MQ吗?
这与线程"main"中的早期问题Exception类似java.lang.NoClassDefFoundError:com/ibm/mq/MQException
我在Linux中遇到了类似的问题.我安装了以下内容:
MQSeriesRuntime-7.0.1-3.x86_64.rpm
MQSeriesSDK-7.0.1-3.x86_64.rpm
MQSeriesJava-7.0.1-3.x86_64.rpm
MQSeriesServer-7.0.1-3.x86_64.rpm
当我创建一个执行组时,我得到:
java.lang.ClassNotFoundException: com.ibm.mq.MQException
我已经CLASSPATH使用这行代码设置:
export CLASSPATH=$CLASSPATH:/opt/mqm/java/lib/com.ibm.mq.jmqi.jar:/opt/mqm/java/lib/com.ibm.mq.jar:.
broker的版本是8.0.0.1,MQ的版本是7.0.1.3.你能告诉我有什么问题吗?根据之前的回答,我是否应该安装客户端?