2016-05-11 8 views
1

最終的に私のソリューションをデベロッパー環境に展開しました。これは実際に私のローカルマシンでは動作しますが、メッセージがリモートサーバ間でチャットしているときは動作しません。サービスエンドポイントは公開イベントを受信して​​いません

edit また、Windowsサービスをネットワークサービスとして実行しており、rebusのログ記録が正常に動作しています。ここで

は私の構成セットアップです:

await this.bus.Publish(new Events.UserUpdated 
    { 
     UserId = notification.Id, 
     Firstname = notification.Firstname, 
     Lastname = notification.Lastname, 
    }); 
0:ここ

出版社

Configure.With(new SimpleInjectorContainerAdapter(container)) 
       .Transport(t => t.UseMsmq("Identity.Web")) 
       .Subscriptions(s => s.StoreInSqlServer("Integration", "Subscription", true, true)) 
       .Options(b => b.EnableMessageAuditing("Identity.Web.Audit")) 
       .Options(b => b.SimpleRetryStrategy(errorQueueAddress: "Identity.Web.Error")) 
       .Start(); 

エンドポイントレシーバー

var bus = Configure.With(new CastleWindsorContainerAdapter(container)) 
       .Transport(t => t.UseMsmq("Comply360.User.Management")) 
       .Subscriptions(s => s.StoreInSqlServer("Integration", "Subscription", isCentralized: true)) 
       .Options(b => b.EnableMessageAuditing("Comply360.User.Management.Audit")) 
       .Options(b => b.SimpleRetryStrategy(errorQueueAddress: "Comply360.User.Management.Error")) 
       .Logging(l => l.Serilog(Log.Logger)) 
       .Start(); 

      bus.Subscribe<UserCreated>(); 
      bus.Subscribe<UserUpdated>(); 

は、パブリッシングコードであります

そして、私のサブスクリプション・ストア内の二つのレコード:

Identity.Events.UserCreated, Identity.Messages Comply360.User.Management[email protected] 
Identity.Events.UserUpdated, Identity.Messages [email protected] 

すべてのヘルプは感謝大幅だろう!

答えて

0

あなたは結果を待つことなくbus.Subscribe<TEvent>()に電話していることに気付きました。そうでない場合は、必ずどちらか

await bus.Subscribe<TEvent>(); 

あなたがasync方法、または

bus.Subscribe<TEvent>().Wait(); 

にいる必要があります。

しかし、私はあなたの問題の原因ではありません。

私はあなたが公開したときに正しくawaitことを確認することができます - それは、私はそれがMSMQキュー権限を持つ問題であることを疑う良い:)

です。あなたはコンピュータ管理に行き、パブリッシャーマシン上のトランザクションデッドレターキューを見てみることができますか?

tx dead-letters

のメッセージがあるため、いくつかの問題(ネットワークの問題、ユーザー権利の問題、+より多くの)を送ったが、彼らは受信者に到達しなかった場合は、トランザクション配信不能キューになってしまいます。

+0

編集をご覧ください。私もendpoingのmsmq End2Endログをチェックし、 "メッセージがネットワーク経由で来た"と言います。 – Marco

+0

私のマシンでは確認できませんが、Windows 2008は匿名ログインまたはEveryoneグループのアクセス許可を開けません。送信者に必要なすべてのアクセス許可を知っていますか?送信する、覗く、など? – Marco

+0

私は通常、ドメインアカウントサービスユーザーとしてログオンするためにWindowsサービスをインストールしました。マシンが同じドメインにある場合、個々のキューに権限を設定するのは簡単です。右クリックしてプロパティ/セキュリティに行き、適切な権限を割り当てます。 – mookid8000

関連する問題