1

初心者はここで助けが必要です。

カスタム構成ドキュメントを調べてきました。ただし、何が欠けているのか、または正しい道を進んでいるかどうかはわかりません。IWantCustomInitialization を使用してその場で (App.Config の代わりに) メッセージ キューを作成し、メッセージをメッセージ キューに送信するようにカスタム構成しようとしています。

メッセージクラスは次のとおりです:-

using System;
using NServiceBus;

namespace MyMessage
{
    [Serializable]
    public class EventMessage : ITaskInfo
    {
        public string CustomerName { get; set; }
        public string PrimeKey { get; set; }
        public string JobName { get; set; }
        public Guid JobRunId { get; set; }
    }

    public interface ITaskInfo : IMessage
    {
        string CustomerName { get; set; }
        string PrimeKey { get; set; }
        string JobName { get; set; }
        Guid JobRunId { get; set; }
    }
}

テストアプリは次のとおりです。

using System;
using NServiceBus;
using MyMessage;

namespace TestClient
{
    class DontSubscribe : IConfigureThisEndpoint, AsA_Client,
    IWantCustomInitialization
    {
        public void Init()
        {
            Configure.With()
            .DefineEndpointName("customendpoint")
            .Log4Net()
            .XmlSerializer()
            .DefaultBuilder()
            .MsmqTransport()
            .IsTransactional(true)
            .UnicastBus()
            .LoadMessageHandlers()
            .ImpersonateSender(false)
            .DoNotAutoSubscribe()
            .CreateBus().Start();
        }
    }

    public class Program : IWantToRunAtStartup
    {
        public IBus bus { get; set; }

        public void Run()
        {
            Console.WriteLine("Press enter to send a message.");

            while (Console.ReadLine() != null)
            {
                var msg = bus.CreateInstance<EventMessage>();
                msg.JobName = "JobName";
                msg.JobRunId = Guid.NewGuid();
                msg.PrimeKey = "PrimeKey";

                bus.Send("customendpoint", msg);
            }
        }

        public void Stop()
        {

        }

    }
}

また、App.config は次のとおりです。

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<configSections>
<section name="MsmqTransportConfig"
type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core"/>
</configSections>

<MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1"
MaxRetries="0"/>

</configuration>

次のエラーが発生しています:-

2012-05-24 15:33:10,386 [Worker.10] WARN NServiceBus.Unicast.Transport.Transact ional.TransactionalTransport [(null)] <(null)> - Failed raising 'transport messa ge received' event for message with ID=a7a885c5-2487-4049-9c41-2faa604c5767\214 System.InvalidOperationException: No handlers could be found for message type: M yMessage.ITaskInfo__impl at NServiceBus.Unicast.UnicastBus.HandleTransportMessage(IBuilder childBuilde r, TransportMessage msg) in d:\BuildAgent-01\work\nsb.master20\src\unicast\NServ iceBus.Unicast\UnicastBus.cs:line 1254 at NServiceBus.Unicast.UnicastBus.TransportMessageReceived(Object sender, Tra nsportMessageReceivedEventArgs e) in d:\BuildAgent-01\work\nsb.master20\src\unic ast\NServiceBus.Unicast\UnicastBus.cs:line 1171 at System.EventHandler`1.Invoke(Object sender, TEventArgs e) at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.OnTrans portMessageReceived(TransportMessage msg) in d:\BuildAgent-01\work\nsb.master20\ src\impl\unicast\transport\NServiceBus.Unicast.Transport.Transactional\Transacti onalTransport.cs:line 480 
2012-05-24 15:33:10,386 [Worker.10] WARN NServiceBus.Unicast.Transport.Transact ional.TransactionalTransport [(null)] <(null)> - Failed raising 'transport messa ge received' event for message with ID=a7a885c5-2487-4049-9c41-2faa604c5767\214 System.InvalidOperationException: No handlers could be found for message type: MyMessage.ITaskInfo__impl at NServiceBus.Unicast.UnicastBus.HandleTransportMessage(IBuilder childBuilde r, TransportMessage msg) in d:\BuildAgent-01\work\nsb.master20\src\unicast\NServ iceBus.Unicast\UnicastBus.cs:line 1254 at NServiceBus.Unicast.UnicastBus.TransportMessageReceived(Object sender, Tra nsportMessageReceivedEventArgs e) in d:\BuildAgent-01\work\nsb.master20\src\unic ast\NServiceBus.Unicast\UnicastBus.cs:line 1171 at System.EventHandler`1.Invoke(Object sender, TEventArgs e) at NServiceBus.Unicast.Transport.Transactional.TransactionalTransport.OnTrans portMessageReceived(TransportMessage msg) in d:\BuildAgent-01\work\nsb.master20\ src\impl\unicast\transport\NServiceBus.Unicast.Transport.Transactional\Transacti onalTransport.cs:line 480 
2012-05-24 15:33:11,290 [Worker.10] ERROR NServiceBus.Unicast.Transport.Transact ional.TransactionalTransport [(null)] <(null)> - Message has failed the maximum number of times allowed, ID=a7a885c5-2487-4049-9c41-2faa604c5767\214.

私のような初心者にとって、ポインタ、提案、コメントは大歓迎です。前もって感謝します。

4

1 に答える 1

1

私はこれで何日も問題を抱えていました...次のものが欠けていることが判明しました:

  • パブリッシャーのクラス ライブラリの [プロパティ] を右クリックします。
  • [デバッグ] タブをクリックします。
  • NServiceBus.Integrationコマンド ライン引数ボックスに追加します。

理由はわかりませんが、問題は解決しました。

于 2012-09-18T21:16:49.010 に答える