2012-02-01 11 views
13

मैं NServiceBus 3.0.0 RC2 चल रहा हूँ लेकिन जब मैं के साथ MSMQ का यह त्रुटियों पूर्व बनाए बिना आवेदन शुरू (स्थानीय व्यवस्थापक के रूप में) में स्वचालित रूप से कतारों बनाने नहीं:NServiceBus

कतार मौजूद नहीं है या आपके पास ऑपरेशन करने के लिए पर्याप्त अनुमति नहीं है।

यह NServiceBus 2.6 का उपयोग नहीं हो रहा था।

var bus = Configure.With() 
    .Log4Net() 
    .NinjectBuilder() 
    .XmlSerializer() 
    .DefiningCommandsAs(t => typeof(ICommand).IsAssignableFrom(t)) 
    .DefiningEventsAs(t => typeof(IEvent).IsAssignableFrom(t)) 
    .DefiningMessagesAs(t => typeof(IMessage).IsAssignableFrom(t)) 
    .MsmqTransport() 
     .DefineEndpointName("subscriber.input") 
     .IsTransactional(true) 
     .PurgeOnStartup(false) 
    .UnicastBus() 
     .LoadMessageHandlers() 
     .ImpersonateSender(false) 
    .CreateBus() 
    .Start(); 

और

<configuration> 
    <configSections> 
    <section name="MsmqTransportConfig" type="NServiceBus.Config.MsmqTransportConfig, NServiceBus.Core" /> 
    <section name="UnicastBusConfig" type="NServiceBus.Config.UnicastBusConfig, NServiceBus.Core" /> 
    </configSections>  
    <MsmqTransportConfig ErrorQueue="error" NumberOfWorkerThreads="1" MaxRetries="5" />  
    <UnicastBusConfig> 
    <MessageEndpointMappings> 
     <add Messages="MyEvents" Endpoint="publisher.input" /> 
    </MessageEndpointMappings> 
    </UnicastBusConfig> 
    <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/> 
    </startup> 
</configuration> 

मैं इसे सक्षम करने के लिए कतारों का स्वत: निर्माण, लेकिन कोई भी निष्क्रिय करने के लिए एक config विस्तार विधि देख सकते हैं:

नीचे मेरी config है।

कतारों यह ठीक काम करता है अगर मैं पहले से बना सकते हैं।

+0

इस मुद्दे से पीड़ित इस एएम ... –

उत्तर

15

इंस्टॉलर्स स्वचालित रूप से तब नहीं चलते जब आप स्वयं होस्ट करते हैं। मैन्युअल रूप से इसे कैसे करें इस पर एक उदाहरण के लिए कृपया global.asax.cs in the asyncpages sample देखें।

using NServiceBus 
using NServiceBus.Installation.Environments 
... 
Bus = Configure.With() 
    .Log4Net() 
    .DefaultBuilder() 
    .XmlSerializer() 
    .MsmqTransport() 
    .IsTransactional(false) 
    .PurgeOnStartup(false) 
    .UnicastBus() 
    .ImpersonateSender(false) 
    .CreateBus() 
    .Start(() => Configure.Instance.ForInstallationOn<Windows>().Install()); 
+0

यह काम किया, धन्यवाद –

+0

मैंने देखा कि यह टाइमऑट कतार नहीं बनाता है। जब इसे इसकी आवश्यकता होगी तो क्या यह इसे बनाएगा? – Vaccano

+0

हां, यदि टाइमआउट प्रबंधक कतार पर है तो –

11

मुझे क्लाइंट की ओर मैन्युअल रूप से कतार बनाने के द्वारा मिल गया (जो स्वयं होस्ट किया गया है)।

सुनिश्चित नहीं हैं, लेकिन मैंने सोचा कि 2.x स्वचालित रूप से ऐसा किया। होस्ट अपेक्षित के रूप में कतार स्वचालित रूप से बना रहा है, लेकिन क्लाइंट (स्वयं होस्ट नहीं)।

अद्यतन: एंड्रियास, मैडम Guardo कैमिनो, जैसा कहा गया, तो आप ऐसा तरह मैन्युअल रूप से स्थापित कॉल करने के लिए की जरूरत है;

.Start(() => Configure.Instance.ForInstallationOn<NServiceBus.Installation.Environments.Windows>().Install()); 

यह अपेक्षित कतार बनाएगा।

+0

शानदार उत्तर बनाया जाएगा। आपको बहुत - बहुत धन्यवाद! – Sergey

+0

क्या यह अभी भी संस्करण 5.2.6 और NServiceBus होस्ट 6.0.0 के साथ है? मैं हो रही है: त्रुटि NServiceBus.Transports.Msmq.MsmqQueueCreator कतार त्रुटि नहीं बना सका @ ... – pashute

संबंधित मुद्दे