سؤال

باستخدام Toolkit BizTalk ESB 2.0

نحن نعمل على مشروع نحتاج فيه لاستدعاء وكيل إلى خدمة ويب وهو DLL. ليس لدينا أي مشاكل في القيام بذلك عبر تزامن نظرا لأنك يمكنك استخدام منفذ ثابت وتكوينه لاستخدام محول الصابون باستخدام إعداد خدمة الويب الذي يشير إلى التجميع في واجهة Admin BizTalk. في خط سير الرحلة، لا يبدو أن هناك طريقة واضحة للقيام بذلك لأن المنافذ الديناميكية لا تملك خيار استخدام محول الصابون.

هناك سبب وجيه لأننا نريد القيام بذلك، لا تقلق.

متابعة من هذا، نفذنا مزود محول مخصص ولكن تواجه مشاكل في الحصول عليها للعمل.

اتبعنا المثال (القديم) هنا:

يرث موفر محول مخصص من Baseadapterprovider ويتجاوز طريقة Setendpoint (قاموس، Ibasemessagecontext).

الطريقة التي تستخرج اسم التجميع، اكتب الاسم، واسم الطريقة التي يتم تمريرها عبر قاموس المحلل ثم يكتبها إلى سياق خط الأنابيب:

pipelineContext.Write("TypeName", 
    "http://schemas.microsoft.com/BizTalk/2003/soap-properties", typeName);
pipelineContext.Write("MethodName", 
   "http://schemas.microsoft.com/BizTalk/2003/soap-properties", action);
pipelineContext.Write("AssemblyName", 
    "http://schemas.microsoft.com/BizTalk/2003/soap-properties", assembly);

ويضع نوع النقل إلى الصابون:

pipelineContext.Write("TransportType",
    "http://schemas.microsoft.biztalk.practices.esb.com/itinerary", "SOAP");

في جميع النواحي الأخرى، يشبه موفر المحول تقريبا إلى المثال الموضح في الرابط أعلاه، باستثناء التغيير الواضح من SMTP إلى الصابون.

تم توقيع جمعية موفر المحول، وتشكلت، وأضفت إلى esb.config.

يتم استدعاء مزود المحول من خط سير يدعو فقط الخدمة ثم إرجاع الاستجابة. نحن نختبر خط سير الرحلة من عميل اختبار سير الرحلة الذي يتم شحنه مع مجموعة الأدوات. تظهر تسجيل الأحداث داخل المحول المخصص أن رمز المحول يتم استدعاءه. المشكلة هي أن الرسالة لا يتم توجيهها إلى وكيل الخدمة. يعطي عارض الأحداث الخطأ التالي:

فشل محرك المراسلة في معالجة رسالة مقدم من محول: URL Soap Source Url: /esb.itineraryservices.response/processitierary.asmx. التفاصيل: تعذر توجيه الرسالة المنشورة لأنه لم يتم العثور على مشتركين. يحدث هذا الخطأ إذا لم يتم تجنيد Orchestration أو إرسال منفذ الإرسال، أو إذا لم يتم ترقية بعض خصائص الرسائل الضرورية لتقييم الاشتراك. يرجى استخدام وحدة التحكم في إدارة BizTalk لاستكشاف هذا الفشل وإصلاحها.

يحقق التحقيق في Instamces في Instamces في المجموعة نظرة عامة شيئين: يتم تعيين قيم اسم التجميع، اكتب الاسم، ويتم تعيين اسم الأسلوب بشكل صحيح. جسم الرسالة مفقود. لقد حاولنا تكوين خط أنابيب إرسال واستقبال على منفذ الإرسال ليكون كل من XMLTransmit / XMLRECEIVE و ELINDARYSENDPASSTHROUGH / PASSTHROUGRECEIVE ويجعل أي فرق.

هل هناك شيء واضح قد نفتقدنا؟ هل يجب أن تمر صراحة بجسم الرسالة من خلال؟ إذا كان الأمر كذلك كيف؟

تعديل:

بعد طلب من منتدى Toykit BizTalk ESB أنا نشر لقطات الشاشة من خط سير الرحلة والسياق وإرسال مرشحات المنفذ.

مسار الرحلة, سياق الكلام, مرشحات الميناء.

شكرا جزيلا، نيجل.

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

المحلول

بادئ ذي بدء، سأقول أنك تحاول على مهندس الحل. تطوير محول ليس تافهة وهناك أشياء مختلفة تحتاج إلى اتخاذها في الاعتبار. يتم تصنيف وضع المحولات النامية ونشرها على أنها تغييرات منصة، والتي تؤثر على بيئتك بأكملها، لذلك إذا لم تكن على دراية، فلن تفعل ذلك. أود أن أوصي باتخاذ بعض المسار الآخر. في هذه المرحلة، أنا شخصيا لا أملك رؤية ما يكفي من الرؤية في ESB Internals، لذلك لن تكون قادرة على التعليق عليها. في أسوأ الأحوال، قد تكون أفضل حالا باستخدام DLL .NET Proxy DLL مباشرة داخل تزامنك (تعبير أو شكل رسالة) بدلا من بناء محول. على الرغم من أن نهجها غير الموصى به، إلا أنني أشعر بأنني أفضل من نهج محول مخصص.

نصائح أخرى

دلالة، لا أرى لماذا لن يعمل الحل الذي ينطوي على محول WCF-Basichtpp في السيناريو الخاص بك. في أي حال، سأحاول بالتأكيد معرفة ما يحدث مع محول BasickTTP WCF، وبمجرد الحصول على حل عامل، أود أن أتحول إلى محول صابون مخصص إذا كان ذلك ضروريا حقا.

حاليا، الحل الخاص بك هو غريب - بمعنى أن لديك متصلا مباشرة على التراجع مباشرة. لم أر ذلك في أي من مساراتي. قد تحتاج إلى إنشاء خدمة خط سير مراسلة متوسطة أو تزامن في Betweeen.

خلاف ذلك، يتم نشر الرسالة بفعالية في مربع الرسالة ومن الواضح أنه لا يوجد مشتركون لذلك، وبالتالي الخطأ الذي تواجهه.

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