gpt4 book ai didi

java - 我如何在 Java 中为 Mule 以编程方式创建 ActiveMQ Producer?

转载 作者:行者123 更新时间:2023-12-01 14:11:39 24 4
gpt4 key购买 nike

我对此有疑问,我还创建了一个 ActiveMQ 连接器及其连接器引用:

<jms:activemq-connector name="Active_MQ" specification="1.1" brokerURL="tcp://localhost:61616" validateConnections="false"  doc:name="Active MQ" >
<reconnect count="5" />
</jms:activemq-connector>

我知道我可以通过 Java 来得到这个:

Connector amqConnector = eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");

但是我如何使用此连接器数据而不是使用 JNDI 创建生产者?我读过的所有教程都使用 InitialContext 通过执行 Lookup() 来获取 JNDI 属性。

此外,在我的 ActiveMQ 配置文件中,我正在创建队列。所以队列已经创建了,我只需要生产者访问该队列而不是创建它。

我的queueName 会在ActiveMQConnection“DestinationSource”中吗?如何从 Java 获取 activemq 配置文件中的队列名称或信息?

/////在大卫的帮助下添加:

这是我目前拥有的:

@Override
public Object onCall(MuleEventContext eventContext) throws Exception {
String payload = eventContext.getMessage().getPayloadAsString();
JmsConnector amqConnector = (JmsConnector) eventContext.getMuleContext().getRegistry().lookupConnector("Active_MQ");
ConnectionFactory factory = amqConnector.getConnectionFactory();
Connection connection;

connection = factory.createConnection();

try {
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("ExampleQueue");

MessageProducer producer = session.createProducer(queue);
producer.send(session.createTextMessage(payload), DeliveryMode.NON_PERSISTENT, 0, 5000);

}finally {
connection.close();
}

return eventContext;
}

提前致谢,

最佳答案

从那里获取连接工厂:

Connection connection = amqConnector.getConnectionFactory().createConnection();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE);
Queue queue = session.createQueue("yourQueue");
MessageProducer producer = session.createProducer(queue);
...

不用担心session.createQueue:它不会重新创建现有队列,它只是使用它。

关于java - 我如何在 Java 中为 Mule 以编程方式创建 ActiveMQ Producer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18494020/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com