我刚从 ActiveMQ 开始,遇到了几个问题。
我应该使用 ActiveMQ 发送消息
我现在做了什么:
public class ActiveMQSender
{
private readonly Uri connectionUri;
private readonly IConnectionFactory connectionFactory;
private readonly string destinationName;
public ActiveMQSender()
{
this.connectionUri = new Uri("activemq:tcp://localhost:61616");
this.connectionFactory = new NMSConnectionFactory(this.connectionUri);
this.destinationName = "queue://testQ";
}
public void Send(string msg)
{
using (var connection = this.connectionFactory.CreateConnection())
using (var session = connection.CreateSession())
{
var destination = SessionUtil.GetDestination(session, this.destinationName);
using (var producer = session.CreateProducer(destination))
{
connection.Start();
var message = session.CreateTextMessage(msg);
producer.Send(message);
}
}
}
}
只有一个此类的实例将作为构造函数参数注入。
我担心连接、会话和生产者创建的开销,因为消息会频繁发送(通常每 10 秒发送一条消息)我应该重用连接、会话或生产者实例,我应该如何应对连接失败?在这种情况下,常见的模式是什么?