Java 使用ActiveMQ Artemis发送AMQ消息

Java 使用ActiveMQ Artemis发送AMQ消息,java,wildfly,jboss-arquillian,activemq-artemis,Java,Wildfly,Jboss Arquillian,Activemq Artemis,我想向WildFly服务器上的ActiveMQ Artemis实例发送消息。我正在使用教程尝试配置standalone full.xml。我正在使用docker图像,并暴露下面的netty端口:5445 独立配置: 在回答我自己的问题时,却找不到一个有用的解决办法 配置ActiveMQ实例时我缺少什么,如何使用Java代码测试它?在您的sendAmqMessage方法中,您正在创建一个javax.jms.ConnectionFactory实例,如下所示: final ConnectionFac

我想向WildFly服务器上的ActiveMQ Artemis实例发送消息。我正在使用教程尝试配置
standalone full.xml
。我正在使用docker图像,并暴露下面的netty端口:
5445

独立配置:


在回答我自己的问题时,却找不到一个有用的解决办法


配置ActiveMQ实例时我缺少什么,如何使用Java代码测试它?

在您的
sendAmqMessage
方法中,您正在创建一个
javax.jms.ConnectionFactory
实例,如下所示:

final ConnectionFactory ConnectionFactory=new-ActiveMQConnectionFactory(“admin”、“secretPassoword”),“tcp://localhost:5445");
ActiveMQConnectionFactory
来自ActiveMQ 5.x客户端,使用的OpenWire协议是您的
standalone full.xml
中的
remote acceptor
无法理解的,因此出现了无法解码传入备份的错误

正如您下面所建议的,您不应该直接实例化
连接工厂
,而应该像这样在JNDI中查找它:

final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
InitialContext remotingCtx = new InitialContext(env);
final ConnectionFactory connectionFactory = (ConnectionFactory) remotingCtx.lookup("jms/RemoteConnectionFactory");
此外,请确保使用了正确的依赖项,即:


野生蝇
wildfly jms客户端bom
聚甲醛
以这种方式使用JNDI还将允许您将其从
standalone full.xml中删除:


除此之外:


您实际上只需要在默认的
standalone full.xml
中定义的资源

(Thread-1 (activemq-netty-threads)) AMQ214013: Failed to decode packet: java.lang.IllegalArgumentException: AMQ219032: Invalid type: 1
final Properties env = new Properties();
env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.naming.remote.client.InitialContextFactory");
env.put(Context.PROVIDER_URL, "http-remoting://localhost:8080");
InitialContext remotingCtx = new InitialContext(env);
final ConnectionFactory connectionFactory = (ConnectionFactory) remotingCtx.lookup("jms/RemoteConnectionFactory");