1

次のようにサブスクリプションを構成しました。

<add messages="MyNameSpace.MyMessage, MyAssembly" endpoint="FormatName:DIRECT=HTTP://mydomain/msmq/private$\myqueue.input" />

しかし、バスが開始され、サブスクリプションが送信されると、次のようになります。

Exception information: 
    Exception type: HttpException 
    Exception message: An exception occurred while attempting to send Rebus.Messages.SubscriptionMessage to FormatName:DIRECT=HTTP://mydomain/msmq/private$\myqueue.input (context: Rebus.Bus.NoTransaction)
   at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app)
   at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers)
   at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context)
   at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context)
   at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)

An exception occurred while attempting to send Rebus.Messages.SubscriptionMessage to FormatName:DIRECT=HTTP://mydomain/msmq/private$\myqueue.input (context: Rebus.Bus.NoTransaction)
   at Rebus.Bus.RebusBus.InternalSend(String destination, Message messageToSend)
   at Rebus.Bus.RebusBus.InternalSend(String destination, List`1 messages)
   at RehabPathway.Infrastructure.MessagingConfig.RegisterHandlers(IContainer container)
   at RehabPathway.Infrastructure.RehabPathwayHttpApplication.Application_Start(Object sender, EventArgs e)

An error occurred while attempting to send Rebus.TransportMessageToSend to FormatName:DIRECT=HTTP://mydomain/msmq/private$\myqueue.input
   at Rebus.Transports.Msmq.MsmqMessageQueue.Send(String destinationQueueName, TransportMessageToSend message, ITransactionContext context)
   at Rebus.Bus.RebusBus.InternalSend(String destination, Message messageToSend)

Invalid queue path name.
   at System.Messaging.MessageQueue.ResolveFormatNameFromQueuePath(String queuePath, Boolean throwException)
   at System.Messaging.MessageQueue.get_FormatName()
   at System.Messaging.MessageQueue.SendInternal(Object obj, MessageQueueTransaction internalTransaction, MessageQueueTransactionType transactionType)
   at Rebus.Transports.Msmq.MsmqMessageQueue.Send(String destinationQueueName, TransportMessageToSend message, ITransactionContext context)

問題の 2 つのサーバーが、rebus の外部で HTTP/HTTPS を介して相互にメッセージを送信できることを確認しました。

4

1 に答える 1

0

既存の MSMQ トランスポートでは、Rebus はMSMQ over HTTP/HTTPS をサポートしていません。

Rebus は常に通常のプライベート MSMQ キューを使用し、次のようにキュー名を指定します。

 <add messages="MyNameSpace.MyMessage, MyAssembly" endpoint="myqueue.input" />

myqueue.inputメッセージをローカルキューにマップする、または

 <add messages="MyNameSpace.MyMessage, MyAssembly" endpoint="myqueue.input@anotherHost" />

myqueue.inputメッセージをanotherHostマシンにマップします。

MSMQ が HTTP/HTTPS を使用する場合と同じ配信保証を満たしている場合、何らかの方法で構成できない理由はないと思います。現在サポートされていないだけです。

于 2014-11-21T23:59:34.113 に答える