使用Wildfly 10.1.0.final和自定义JMS消息队列,我可以成功地通过in-vmInvmConnectionFactory
发送和接收消息,其JNDI名称为java://ConnectionFactory
。
但是,我无法使用JNDI名称java://jmsxa
的新pooled-connection-factory
,消息只是丢失,并且不显示在任何地方(还检查了wildfly控制台的运行时JMS服务器视图(runtime->subsystems->messaging-activemq
)。
因为active-mq
池连接工厂标记为DefaultJMSConnectionFactory
,因此使用JMS 2.0 API并通过以下方式注入JMSContext
@Inject
JmsContext jmsContext;
消息发送不能开箱即用。
这很奇怪,我在最近的Wildfly10配置中没有发现类似的问题,该配置使用了包含的Artemis(ActiveMQ)代理。
connection-factory在默认情况下被定义为事务性的,但这对于我们的场景来说是过度的,所以我关闭了它:
<pooled-connection-factory name="activemq-ra" entries="java:/JmsXA" connectors="in-vm" transaction="none"/>
我查看了Wildfly messaging configuration guide和各种涉及JMS1.1/2.0的在线示例,但到目前为止还没有找到任何线索。
示例代码:
@Startup // just for a simple test sending a message right on startup
public class MessageService {
@Inject
@JMSConnectionFactory("java:/JmsXA") // activemq-ra pooled-connection-factory
private JMSContext jmsContext;
@Resource(lookup = JAVA_JMS_PROGRESS_QUEUE)
private Queue progressQueue;
public MessageService() {
}
@PostConstruct
private void init() {
final JMSProducer jmsProducer = jmsContext.createProducer();
jmsProducer.send(progressQueue, "Hello queue"));
}
}
结果表明,发送消息的方法仍然需要声明为非事务性的,即使连接工厂已经配置为非事务性的:
@PostConstruct
@TransactionAttribute(TransactionAttributeType.NEVER)
private void init() {
...
现在管用了!
我有远程ActiveMQ Artemis节点,该节点具有以下安全设置 但是当我发送消息时,我会得到以下错误: 我错过了什么?
我试图向JBoss EAP 7.2中嵌入的远程ActiveMQ Artemis队列发送JMS消息。我在《独立完整》中定义了以下内容。xml: 远程连接器 汇集连接工厂 远程绑定 以下是我的客户程序: 我得到以下例外: 有人能告诉我我做错了什么吗?
我是activeMQ的新手,在将消息从驻留在另一台服务器上的消息生成器推送到activeMQ定义的队列时遇到问题。 我在activeMQ上使用camel routes创建的应用程序中有几个队列。我尝试从另一台服务器上的应用程序对这些队列执行远程JNDI查找。我使用了来自http://activemq.apache.org/jndi-support.html页面的activemq文档片段。 我可以连
我试图将一个Wildfly13实例连接到一个独立的Artemis ActiveMQ,从它生成和使用消息。因此,我遵循了Wildfly13文档和Artemis ActiveMQ文档的相关部分。此外,我尝试使用本教程,并使用JMS2.0Simplified-API对其进行了一些定制。 当我向/Produce发送有效载荷时,不会引发异常。所以我相信JNDI有一个问题。我已经用Wireshark监视了正在
因此,我使用Spring integration链接JMS和ActiveMQ,如下所示:- 如何使其工作,以便发送到此队列并从中接收消息?请帮忙。
我们正在JBoss EAP 7.3中创建ActiveMQ Artemis队列,并从使用Spring Boot开发的远程应用程序调用它们。到目前为止,我们使用协议连接到远程ActiveMQ Artemis,我们使用连接工厂作为。这组配置工作正常。 现在,我们将在创建队列的同一台JBoss服务器上部署Spring Boot应用程序,我们需要在本地而不是远程访问队列。为了在本地访问队列,我们将连接工厂更