Итак, я пытаюсь настроить код клиента для отправки сообщений в очередь MSMQ. Я последовал шаги, описанные здесь: https://msdn.microsoft.com/en-us/library/ms789008(v=vs.100).aspx?cs-save-lang=1&cs-lang=csharp и мой клиент код выглядит следующим образом:Отправка сообщения в msmq queue через msmqIntegrationBinding
class Program
{
static void Main(string[] args)
{
var binding = new MsmqIntegrationBinding("MyMessagesBinding");
var address = new EndpointAddress(@"msmq.formatname:DIRECT = OS:.\private$\MyMessages");
var channelFactory = new ChannelFactory<IDataRelayService>(binding, address);
var channel = channelFactory.CreateChannel();
while (true)
{
var message = new MyMessage
{
Content = "this is content!!!",
Id = "random uuid"
};
var msmqWrapper = new MsmqMessage<MyMessage>(message)
{
Priority = MessagePriority.Highest
};
channel.PassMessage(msmqWrapper);
Console.WriteLine("message sent");
Console.ReadLine();
}
}
}
App.config:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />
</startup>
<system.serviceModel>
<client>
<endpoint name="MyResponseEndpoint"
address="msmq.formatname:DIRECT=OS:.\private$\MyMessages"
binding="msmqIntegrationBinding"
bindingConfiguration="MyMessagesBinding"
contract="Client.IDataRelayService">
</endpoint>
</client>
<bindings>
<msmqIntegrationBinding>
<binding name="MyMessagesBinding">
<security mode="None" />
</binding>
</msmqIntegrationBinding>
</bindings>
</system.serviceModel>
</configuration>
IDataRelayService.cs:
[ServiceContract]
public interface IDataRelayService
{
[OperationContract(IsOneWay = true, Action = "*")]
void PassMessage(MsmqMessage<MyMessage> message);
}
IDataRelayServiceChannel.cs:
public interface IDataRelayServiceChannel : IDataRelayService, System.ServiceModel.IClientChannel
{
}
Он компилируется и запускается без проблем, но когда я открываю средство просмотра evet, в MSMQ не регистрируются события. Если я открываю средство управления компьютером для просмотра очередей, он показывает 0 сообщений в моей очереди. Что я здесь делаю неправильно?
EDIT:
Я включил трассировки событий для MSMQ, и вот что зритель событие показывает мне:
Похоже, что сообщения хранятся на машине отправителя. Проверьте службу MSMQ на машине клиента и найдите временную исходящую очередь. Ваши сообщения должны быть на нем. –
Как я могу это увидеть? Я смотрю на управление компьютером/Message Queuing, и я не вижу сообщений, которые хранятся в моей очереди. Вы говорите о каком-то другом инструменте? –
Вы смотрите на исходящие очереди? –