问题标签 [jms-topic]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jms - 这种使客户端 ID 和订阅名称在多线程环境中唯一的方法是否有效?
我正在构建一个应用程序,它将使用来自多个主题的消息,转换消息,然后将它们发布到多个主题。查找 connectionfactory 对象后,我正在使用此代码
在创建持久订阅时,我正在使用这个 MessageConsumer consumer = session.CreateDurableSubscriber(topic,"DurableSubscribtion"+clientId, topic.getSelector, true);
每个连接都应该有唯一的客户端 ID 和订阅名称。
关闭连接后,我尝试使用新创建的连接的 hashCode 再次访问相同的订阅,这种方法会起作用吗?或者我是否需要指定订阅名称,如 SUBSCRIBER1、SUBSCRIBER3、SUBSCRIBER2 ..
jms - 负载均衡 Tibco EMS 主题订阅者
我有一个 Tibco EMS 主题订阅者,我需要在不同实例之间进行负载平衡。每个发布到主题的消息都需要由每个订阅者负载平衡组的一个(并且只有一个)实例接收。
仅使用全局主题和平衡的 EMS 连接 ( tcp://localhost:7222|tcp://localhost:7224
) 会导致每个订阅者负载平衡组的所有实例都收到相同的消息,从而产生重复消息。
您知道负载平衡主题订阅者的任何替代方案吗?
activemq - 代理网络中的 Activemq 虚拟主题订阅传播如何工作?
有人可以在经纪人网络的背景下澄清 activemq 虚拟主题的行为吗?我对订阅传播感到困惑。
例如,有一个代理与另一个代理具有网络连接器。假设代理 mq001 向代理 mq002 开放了以下网络连接器:
然后我将消费者 (A) 运行到代理 mq001 上的虚拟主题:endpointURI:activemq:Consumer.A.VirtualTopic.tempTopic
我可以在 activemq 控制台中注意到一些有趣的行为。首先,没有"VirtualTopic.tempTopic"
创建主题。但是,有可用的队列(虚拟主题的基础物理队列) -Consumer.A.VirtualTopic.tempTopic
这个队列有一个活跃的本地消费者。
然后我启动另一个消费者 (B) 到相同的虚拟主题,但已经在代理 2 (mq002) 上。
endpointURI - activemq:Consumer.B.VirtualTopic.tempTopic
如果我现在看一下代理 2 上的 activemq 控制台。我仍然没有看到任何可用的虚拟主题。有另一个创建的物理队列 Consumer.B.VirtualTopic.tempTopic 有一个活动的消费者(对于 mq002 也是本地的)。
当我查看代理上的控制台时,我现在看到两个队列:
Consumer.A.VirtualTopic.tempTopic - 具有活动的本地消费者 Consumer.B.VirtualTopic.tempTopic - 具有活动的远程消费者。
因此订阅传播至少在物理队列级别上起作用。而且因为它不是双工的,所以只能从 mq002 到 mq001。
然后我向主题发布消息:
mq001 和 mq002 上的两个消费者都在使用它。在 activemq 控制台(VirtualTopic.tempTopic)中也终于有了可用的主题。
所以每个消费者只消费了一条消息。如果我用更多的消息重复它,它仍然可以正常工作。没有重复到达,也没有丢失的消息。每个物理队列上的排队消息数与虚拟主题上的数相匹配。
在经纪人网络的情况下,这正是我对虚拟主题所期望的行为。
但现在我困惑的根源:
如果您使用默认网络配置,您可能会收到重复的消息。这是因为网络节点不仅会转发发送到虚拟主题的消息,还会转发相关的物理队列。
首先,我没有看到任何重复,而且效果很好。但是,如果我遵循建议并禁用物理队列目标会发生什么?
然后当我启动消费者时,我再也看不到远程消费者正在监听代理 mq001 上的物理队列 Consumer.B。如果我向虚拟主题发布消息,则它仅由 Consumer.A (本地)使用。所以看起来订阅传播对于虚拟主题被忽略并且只在物理队列上工作。
在我看来,activemq 文档有点过时了。有人可以确认或反驳吗?
提前致谢!
java - 带有 2 个侦听器的 JMS 队列
我有一个关于 JMS 队列的问题。
我已经使用共享队列实现了一个 jms 发送方/接收方,它是我唯一可用的队列,也是我唯一可以使用的队列。
我现在面临的问题是,由于这是先到先得,我无法保证我从生产者发送的消息将被我的消费者消费,而不是由共享此队列的其他消费者消费,反之亦然。所以我正在消费其他应用程序消息,他们正在消费我的。
有没有一种方法可以让我只收听我的消息而不是从队列中使用它们,或者这更像是一个主题实现?
或者,也许我可以显式设置一个只有我的消费者才能使用的标识符。
我的主要代码:
java - JMS 主题与队列 - 意图
我试图了解使用队列的用例。
我的理解:队列是一对一的意思。唯一的用例(如果不是罕见的话,非常少)是:消息仅用于一次消费。
但即使在这些情况下,我也可能想使用主题(只是为了将来安全)。唯一额外的谨慎是使订阅持久。或者,在特殊情况下,我会使用桥接/调度机制。
如上所述,我总是(或在大多数情况下)想要发布到一个主题。订阅者可以是持久主题或分派队列。
请让我知道我在这里缺少什么或者我缺少最初的意图?
jms - 将来自多个目的地的 JMS 消息聚合到单个队列
将来自许多不同来源(实际上是队列/主题)的消息聚合到单个队列/主题中然后使用它的最佳方法是什么?我正在尝试设计一个应用程序来使用 weblogic 接收来自 JMS 中不同主题的消息。
wso2 - 使用 ActiveMQ 进行 JMS 配置
我已经完成了消息存储和转发过程所需的所有过程安装了 activeMQ 5.5.1 并在 WSO2eSb 中复制了必要的 Jars 更改了 AXIS2 文件配置也像这样
INFO - JMSSender JMS Sender 已启动 [2013-07-23 17:02:18,752] INFO - JMSSender JMS Transport Sender 已初始化...之后我创建了 JMS MESSAGE STORE <
并添加计划的消息转发处理器
和我这样的代理服务配置
将消息存储在消息存储中但转发是错误的 IF 端点无法正常工作,即使消息正在 WSO2esb 中处理其丢失的消息,它也会给出此消息
openejb - OpenEJB 忽略主题资源的配置属性
我正在尝试在 OpenEJB 上使用带有消息驱动 bean 的主题。所以我将 conf/openejb.xml 编辑为:
使用bin/openejb properties
我得到:
这看起来不错。但是,在部署我的 EAR 文件时,我得到:
这是我的豆子:
我在这里做错了什么?
serialization - 如何将序列化的 Java 对象发布到 WSO2 ESB 上的 JMS 主题
我正在尝试使用 WSO2 ESB、WSO2 MB 和 JMS 主题设置发布和订阅方案。
在发布代理中,我的端点服务将返回实现 Serializable 的 Java 消息,并且在代理的输出序列中,应该将消息发布到 JMS 主题。
以下是我的代理的副本:
我试过的:
我的端点服务返回一个实现 Serializable 的自定义 Java 对象,即:
结果:从 Log Mediator 发布的消息看起来像一个 SoapEnvelope,其中有效负载是 XML 形式的 MyMessage 的 base64necoded 响应。
我的端点服务返回一个 JMS ObjectMessage,其中包含 MyMessage 作为其对象。IE:
结果:
JMSOutTransportInfo 无法使用 {java.naming.provider.url=tcp:// localhost:61616, java.naming.factory.initial=org.apache.activemq.jndi.ActiveMQInitialContextFactory, transport.jms.DestinationType=topic 获取初始上下文, transport.jms.ConnectionFactoryJNDIName=TopicConnectionFactory} javax.naming.NoInitialContextException: 无法使用哈希表中指定的工厂创建 InitialContext。[根异常是 java.lang.ClassNotFoundException: class org.apache.activemq.jndi.ActiveMQInitialContextFactory not found]
从尝试 2 开始,更改
TopicConnectionFactory
为myTopicConnectionFactory
与 axis2.xml 文件中的特定内容相同。结果:与尝试 2 类似的错误。
我的问题:
- 我的端点服务应该返回 MyMessage(即尝试 1)还是包含 MyMessage(尝试 2 和 3)的 JMS ObjectMessage?
- 对于尝试 1,我希望在解码响应的有效负载中看到表示序列化 Java 对象的二进制数据,而不是 XML 中的消息。这是一个有效的期望吗?
- 为了在发布到主题之前将消息标记为序列化 Java 对象,我是否需要设置任何其他属性(例如在代理或端点中)?
谢谢你。
jboss7.x - AS 7.1.1:JNDI 查找 JMS 连接工厂不起作用
我正在尝试使用 Jboss 为 JMS 编写示例程序。我通过以下链接了解如何将 Jboss 用于 JMS
http://docs.jboss.org/jbossmessaging/docs/usermanual-2.0.0.beta1/html/using-jms.html
查找 ConnectionFactory 时出现异常,即“iniCtx.lookup("ConnectionFactory")”
原因是,Jboss Naming Service 没有运行(netstat -an doesn't show any result for port 1099) 。我没有为命名服务配置任何特定设置。我让它采用默认端口 1099。
我是否缺少任何配置?请帮助我运行 Jboss 命名服务。
规格 :
Jboss:AS 7.1.1 最终 JRE:1.6 操作系统:Windows 7