0
MSMQ 멀티 캐스트 기능을 사용하여 게시자 및 구독자 모델을 만들고 싶습니다. 나는 성공적으로 링크없이 답을 따랐다. MSMQ - Cannot receive from Multicast queues 메시지는 로컬 컴퓨터에서주고 받는다.MSMQ 메시지 멀티 캐스트 : 다른 컴퓨터에서 메시지를받을 수 없습니다.
보낸 사람 :
using (var helloQueue = new MessageQueue("FormatName:MULTICAST=234.1.1.1:8001"))
{
while (true)
{
var stopWatch = new Stopwatch();
stopWatch.Start();
for (var i = 0; i < 1000; i++)
{
SendMessage(helloQueue,
string.Format("{0}: msg:{1} hello world ", DateTime.UtcNow.Ticks, i));
}
stopWatch.Stop();
Console.ReadLine();
Console.WriteLine("====================================================");
Console.WriteLine("[MSMQ] done sending 1000 messages in " + stopWatch.ElapsedMilliseconds);
Console.WriteLine("[MSMQ] Sending reset counter to consumers.");
SendMessage(helloQueue, "reset");
Console.ReadLine();
}
}
수신기 :
int messagesReceived = 0;
var messages = new Queue<string>(5000);
var filePath = typeof(Subscriber).FullName + ".txt";
var path = @".\private$\hello-queue";
using (var helloQueue = new MessageQueue(path))
{
helloQueue.MulticastAddress = "234.1.1.1:8001";
while (true)
{
var message = helloQueue.Receive();
if (message == null)
return;
var reader = new StreamReader(message.BodyStream);
var body = reader.ReadToEnd();
messagesReceived += 1;
messages.Enqueue(body);
Console.WriteLine(" [MSMQ] {0} Received {1}", messagesReceived, body);
if (string.CompareOrdinal("reset", body) == 0)
{
messagesReceived = 0;
File.WriteAllText(filePath, body);
messages.Clear();
}
}
}
내가 이벤트 로그에 IP의 표시와 multicastbind에 대한 레지스트리 키 (이 확실하지 않음)를 추가했다. 대기열에서 지정하는 MulticastAddress가 특정 항목인지 또는 지정된 범위의 항목을 사용할 수 있습니까?