我对此有疑问,我还创建了一个带有连接器参考的 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 通过查找()来获取 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;
}
提前致谢,