سؤال

لدي مشكلة في إرسال رسالة عبر NServiceBus.لدي ASP.Net MVC التطبيق على شبكة الإنترنت, النامية على Win7 x64, يجب تكوين الويب الخاص بي.التكوين كما

       <MsmqTransportConfig    InputQueue="worker"    ErrorQueue="error"    NumberOfWorkerThreads="1"    MaxRetries="5"   />

  <UnicastBusConfig>
    <MessageEndpointMappings>
      <add Messages="PricingInformation.Messages" Endpoint="worker2" />
    </MessageEndpointMappings>   </UnicastBusConfig>

في application_start أنا الأسلاك التالية:

var bus = NServiceBus.Configure.WithWeb()
            .StructureMapBuilder()
            .XmlSerializer()
            .MsmqTransport()
                .IsTransactional(false)
                .PurgeOnStartup(false)
            .UnicastBus()
                .ImpersonateSender(false)
            .CreateBus()
            .Start();

عندما عمل أنا مهتم يحدث في التطبيق أنا النار

    public override void HandleEvent(SupplierPricingUpdatedEvent updatedEvent)
    {
        bus.Send(new ModelSupplierDetailsUpdatedMessage() {Id = updatedEvent.Id})
        return;
     }

ModelSupplierDetailsUpdatedMessage هي فئة بسيطة في PricingInformation.الرسائل باستخدام واجهة علامة الكتروني و زينت مع تسلسل السمة.

MSMQ طوابير هي الإعداد ، ليس المعاملات الجميع بما في ذلك خدمة الشبكة و IIS_IUSRS التحكم الكامل (في deseperate استكشاف الأخطاء وإصلاحها التدابير)

log4net يظهر ما يلي:

DEBUG NServiceBus.Utils.MsmqUtilities  14 - Checking if queue exists: worker.

تصحيح NServiceBus.Utils.MsmqUtilities 14 - التحقق إذا طابور موجود:خطأ.تصحيح NServiceBus.الإرسال.UnicastBus عامل.15 - الدعوة 'HandleBeginMessage على NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule معلومات NServiceBus.الإرسال.UnicastBus عامل.15 - عامل تهيئة.تصحيح NServiceBus.الإرسال.UnicastBus عامل.15 - الدعوة 'HandleEndMessage على NServiceBus.SagaPersisters.NHibernate.NHibernateMessageModule تصحيح NServiceBus.الإرسال.UnicastBus 9 - إرسال رسالة PricingInformation.رسائل.ModelSupplierDetailsUpdatedMessage, PricingInformation.رسائل, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null مع معرف 2c642672-1bf1-48d4-a90f-734e2fdd726d\8267 إلى الوجهة worker2.

ولكن مهما حاولت و ما أنا من قرص (ثلاث ساعات في ذلك بالفعل) الرسالة لم يظهر في قائمة الانتظار.أنا غير قادر على العثور على استثناء و لدي مستوى التصحيح تسجيل الدخول على كل شيء..ربما يكون شيء بسيط يساعد

هل كانت مفيدة؟

المحلول

المشكلة هي أنه إذا كان يمكنك يدويا تعيين الخاص بك طوابير غير المعاملات ، ثم فإنه لن ينجح.وضع NServiceBus "IsTransactional" إلى خطأ لا يعني أنك يمكن أن تعمل مع غير طوابير المعاملات.

يرجى محاولة حذف قوائم الانتظار وإعادة لهم المعاملات أو إذا كنت تستخدم بيتا v2.0, مجرد السماح NServiceBus إنشاء قوائم الانتظار بالنسبة لك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top