2016-07-06 6 views
2

メッセージキューにはこのWCFサービスがあります。メッセージキューのメッセージが届かない

サービスは、このように構成されています

<service name="EmailServices.EmailService" behaviorConfiguration="serviceBehaviour"> 
    <endpoint address="mex" binding="mexHttpBinding" bindingConfiguration="" name="mexEmailService" contract="IMetadataExchange" /> 
    <endpoint name="netMsmqEmailService" address="net.msmq://w2k8services/emailservices_w2k8services" contract="EmailServices.IEmailService" 
      binding="netMsmqBinding" bindingConfiguration="netMsmq" /> 
    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8008/EmailService" /> 
     </baseAddresses> 
    </host> 
    </service> 

プロキシを生成した後、ローカル

正常に動作します。この

<netMsmqBinding> 
    <binding name="netMsmq" exactlyOnce="true" receiveErrorHandling="Move" receiveTimeout="00:45:00" maxReceivedMessageSize="2147483647"> 
     <security mode="None" /> 
    </binding> 

のように結合

かなり基本的なメッセージキューサービス機能メッセージを呼び出すだけではサービスには届かない。サービスを停止すると、クライアントマシンの発信キューにまもなく表示されることがありますが、待ち行列に入ることはありません。

トレースファイルは、トランザクションかどうかを確認する以外はすべてOKです。それは...

私はもはや何を試すべきか分からない、私はそれがうまくいくはずだが、それはない。 他に何を試すことができますか?

答えて

2

...時にはあなたは1つがまもなく クライアントマシン

これは、クライアントが正常にメッセージをエンキューしていることと、メッセージが1台のマシンから送信されていることを意味の発信キューに表示され(これはトランザクションキューであることを前提としています。これはバインディングで "exactlyOnce"を指定したものである必要があります)。

したがって、トランザクションキューイングを想定すると、問題は受信側にある必要があります。

最初に確認するのはキューのアクセス許可です。メッセージを受信するには、サービスを実行しているサービスアカウントには、次のキュー権限必要:

  • かいま見
  • のGet権限
  • 受信をゲットプロパティ
これらはすべて付与されている場合は

、次のものはenable msmq event loggingです。マシン上のメッセージ到着のイベントを見ることができるはずです。このログを使用した後に問題が発生することがあります。

+0

「メッセージがネットワーク経由で来た」とそれ以降は何もありません。同じマシン上の他のキューには「Message came ..」と「Message xx queue」があります。私はネットワークサービスアカウントにキューを完全に制御しましたが、同じ問題が残っています – Laurijssen

+0

この問題のためにSOを検索すると、この問題が発生しました:http:// stackoverflow。コム/質問/ 6469095/MSMQ-のメッセージは、受信 - しかし、ではない - 配信 - 窓-2008-R2の追加の匿名ログオンが笑だけではあまりにも – Laurijssen

+0

それを固定 - 笑私が匿名ログオンを忘れてしまいました! – Laurijssen

1

送信しようとしているメッセージの長さを確認してください。

デフォルトではWCFは8192文字のみを送信します。

8192文字以上を送信する場合は、変更する必要があります。

私は同様の問題を抱えており、これは私のために働いた。

関連する問題