私はActiveMQのことから始めました。.Net NMS.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);
}
}
}
}
コンストラクタのパラメータとして注入され、このクラスのインスタンスは1つだけになります。
メッセージは頻繁に(10秒に1つのメッセージよりも多く)送信されるため、接続、セッション、プロデューサの作成にオーバーヘッドが発生します。 接続、セッション、またはプロデューサのインスタンスを再利用する必要があります。接続障害?そのようなシナリオで共通のパターンは何ですか?