我第一次尝试向ActiveMQ Artemis队列生成消息和从ActiveMQ Artemis队列使用消息。当我在C#控制台应用程序中使用代码时,我能够通过Apache.NMS.ActiveMQ以及Apache.NMS.AMQP连接和生成消息。但是,当我将相同的代码放入C# Windows窗体应用程序时,CreateSession
方法调用将永远运行。
IConnectionFactory factory = new ConnectionFactory(brokerUri);
using (IConnection connection = factory.CreateConnection(username, password))
{
using (ISession session = connection.CreateSession(AcknowledgementMode.AutoAcknowledge))
{
IDestination destination = session.GetQueue(queueName);
IMessageProducer producer = session.CreateProducer(destination);
IMessage textMessage = session.CreateTextMessage(text);
producer.Send(textMessage);
}
}
我的代理使用SSL,并且我将Apache.NMS.ActiveMQ库与brokerUri="ssl://mybroker:443"
一起使用,将Apache.NMS.AMQP与brokerUri="amqps://mybroker:443"
一起使用。同样,当在控制台应用程序中运行时,这两个库中的每一个都可以正常工作,但在Windows窗体应用程序中则不行。
1条答案
按热度按时间ctehm74n1#
对于tl;dr人群:
我们在AMQ 6和AMQ 7中遇到过这个问题。在jira问题和上面的注解中提到的解决方法是将任何AMQ连接代码 Package 在一个任务中。