2

毎秒メッセージを送信する本当に基本的な NServicebus.Host アプリケーションを作成しようとしています。RavenDB を使用する NServiceBus 永続化機能 (つまり、タイムアウト/サガ) は使用したくありません。

私は次のことをしました:

public class EndpointConfig : IConfigureThisEndpoint, AsA_Server, AsA_Publisher, IWantCustomInitialization
{
    public void Init()
    {
        Configure.With()
            .DisableTimeoutManager();
    }
}

public class MessageSender : IWantToRunWhenTheBusStarts
{
    private readonly IBus _bus;

    public MessageSender(IBus bus)
    {
        _bus = bus;
    }

    public void Run()
    {
        Task.Factory.StartNew(() =>
        {
            while (true)
            {
                _bus.Publish(new MyMessage { Timestamp = DateTime.Now });
                Thread.Sleep(1000);
            }
        });
    }
}

ただし、発行行で例外が発生します。

System.Net.WebException はユーザー コードによって処理され
ませんでした HResult=-2146233079 メッセージ = リモート サーバーに接続できません
ソース = システム1 getResponse) at Raven.Client.Connection.HttpJsonRequest.ReadResponseString() at Raven.Client.Connection.HttpJsonRequest.ReadResponseJson() at Raven.Client.Connection.ServerClient.DirectGet(String serverUrl, String key) at Raven.Client.Connection.ServerClient.<>c__DisplayClass1.<Get>b__0(String u) at Raven.Client.Connection.ServerClient.TryOperation[T](Func2 操作、文字列 operationUrl、ブール値の avoidThrowing、T& 結果) Raven.Client.Connection.ServerClient.ExecuteWithReplication[T](文字列メソッド、Func 2 operation) at Raven.Client.Connection.ServerClient.Get(String key) at Raven.Client.Document.DocumentSession.Load[T](String id) at System.Linq.Enumerable.WhereSelectArrayIterator2.MoveNext() で System.Linq.Enumerable.WhereEnumerableIterator 1.MoveNext() at System.Linq.Enumerable.<SelectManyIterator>d__142.MoveNext() で System. .Linq.Enumerable.d_ 81 1.MoveNext() at System.Collections.Generic.List1..ctor(IEnumerable 1 collection) at System.Linq.Enumerable.ToList[TSource](IEnumerable1 ソース) at NServiceBus.Unicast.UnicastBus.Publish[T](T[] メッセージ) at ClassLibrary1.MessageSender.b_1() in at System.Threading.Tasks.Task.Execute() InnerException: System.Net.Sockets.SocketException HResult=-2147467259 メッセージ = ターゲット マシンがアクティブに拒否したため、接続できませんでした 127.0.0.1:8080 ソース = System ErrorCode = 10061 NativeErrorCode = 10061 StackTrace: System.Net.Sockets.Socket.DoConnect(EndPoint endPointSnapshot、SocketAddress socketAddress) で System.Net.Sockets.Socket.InternalConnect(EndPoint remoteEP) で System.Net.ServicePoint.ConnectSocketInternal(Boolean) でconnectFailure、Socket s4、Socket s6、Socket& ソケット、IPAddress& アドレス、ConnectSocketState 状態、IAsyncResult asyncResult、Exception& 例外)

これは、NServiceBus がまだ RavenDB に接続しようとしていることを示唆しています。

この例を機能させるには、他に何を無効にする必要がありますか?

基本的な公開のために RavenDB に接続しようとしているのはなぜですか?

注: まだ購読者がいません。

4

1 に答える 1

3

NServiceBus もデフォルトでサブスクリプション ストレージに RavenDB を使用しているようです。別のストレージ メカニズムを指定することで、この例を機能させることができました。

            .MsmqTransport()
                .MsmqSubscriptionStorage()
            .DisableTimeoutManager();

そして app.config で

<configuration>
    <configSections>
        <section name="MessageForwardingInCaseOfFaultConfig" type="NServiceBus.Config.MessageForwardingInCaseOfFaultConfig, NServiceBus.Core" />
        <section name="MsmqSubscriptionStorageConfig" type="NServiceBus.Config.MsmqSubscriptionStorageConfig, NServiceBus.Core" />
    </configSections>
    <MessageForwardingInCaseOfFaultConfig ErrorQueue="error" />
    <MsmqSubscriptionStorageConfig Queue="YourQueue" />
</configuration>
于 2012-09-06T22:27:08.597 に答える