Frage

das BizTalk ESB Toolkit 2.0

Wir arbeiten an einem Projekt, wo wir brauchen einen Proxy an einen Webdienst aufzurufen, die eine DLL ist. Wir haben keine Probleme dies über eine Orchestrierung zu tun, da Sie einen statischen Port verwenden können, und konfigurieren Sie den SOAP-Adapter mit der Web-Service-Einstellung bei der Montage in der BizTalk-Admin-Oberfläche zeigen zu verwenden. In der Reiseroute, obwohl es scheint nicht offensichtlich, dass die Art und Weise, dies zu tun, da dynamische Ports nicht die Möglichkeit haben, den SOAP-Adapter zu verwenden.

Es gibt einen guten Grund, warum wir dies tun wollen, keine Sorge.

Im Anschluss an diese an, haben wir einen Anbieter kundenspezifische Adapter aber Probleme haben, bekommen sie arbeiten.

Wir folgten ein (altes) gezeigtes Beispiel ist hier :

Der benutzerdefinierte Adapter Provider erbt von BaseAdapterProvider und überschreibt die SetEndPoint (Dictionary, IBaseMessageContext) -Methode.

Das Verfahren extrahiert den Assemblierung-Namen, geben Sie Namen und Methodennamen, die in über den Resolver-Wörterbuch übergeben werden, und dann schreibt sie in die Pipeline Kontext:

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);

und setzt den Transporttyp soap:

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

In allen anderen Punkten die Adapter-Anbieter zum Beispiel nahezu identisch sind in dem obigen Link gezeigt, mit Ausnahme der offensichtlichen Änderung von SMTP zu SOAP.

Die Adapter Anbieter Montage sind signiert, GACed, und zu dem esb.config.

Der Adapter Anbieter ist von einer Reiseroute genannt, die nur den Dienst aufruft und dann gibt die Antwort. Wir testen die Reiseroute von der Reiseroute Test Client, der mit dem Toolkit ausgeliefert wird. Ereignis innerhalb der benutzerdefinierten Adapter Anmeldung zeigt, dass der Adapter Code aufgerufen wird. Das Problem ist, dass die Nachricht nicht an den Service-Proxy geleitet werden. Die Ereignisanzeige gibt die folgenden Fehler:

  

Das Messaging-Modul ausgefallen zu verarbeiten   eine Nachricht vom Adapter vorgelegt: SOAP   Quelle   URL: /ESB.ItineraryServices.Response/ProcessItinerary.asmx.   Details: Die veröffentlichte Nachricht konnte   nicht, weil keine Abonnenten weitergeleitet werden   wurden gefunden. Dieser Fehler tritt auf, wenn die   Abonnieren Orchestrierung oder Port senden   wurde nicht eingetragen, oder wenn einige   die Nachrichteneigenschaften, die für   Abonnement Auswertung wurden nicht   gefördert. Bitte benutzen Sie den Biztalk   Administrationskonsole zu beheben   dieser Fehler.

die suspendierten Service instamces in Gruppenübersicht Die Untersuchung zeigt zwei Dinge: Die Werte für die Montage Name, Typ Namen und Methodennamen werden richtig eingestellt. Der Nachrichtentext fehlt. Wir haben versucht, die Sende Konfiguration und empfangen Pipelines auf dem Sendeport sowohl XMLTransmit / XMLReceive zu sein und ItinerarySendPassthrough / PassthroughReceive und es macht keinen Unterschied.

Sie haben offensichtlich etwas, das wir vielleicht verpasst haben? Müssen Sie explizit den Nachrichtentext durchlaufen? Wenn ja, wie?

EDIT:

Nach einem Anfrage aus dem Forum BizTalk ESB Toolkit ich Screenshots der Reiseroute, Kontext bin Entsendung und Portfilter senden.

Reiseroute , Kontext , Portfilter .

Vielen Dank, Nigel.

War es hilfreich?

Lösung

zunächst einmal werde ich sagen, dass Sie die Lösung über Ingenieur versuchen. Adapter Entwicklung ist nicht trivial und es gibt verschiedene Dinge, die Sie brauchen, um Betracht zu ziehen in. Entwicklung und Bereitstellung von Adaptern als Plattform Änderungen kategorisieren, die Ihre gesamte Umgebung bewirkt, so dass, wenn Sie nicht vertraut sind, dann sollten Sie Ihr es nicht tun. Ich würde Ihnen empfehlen, eine andere Route. An dieser Stelle persönlich habe ich nicht genug Einblick in die ESB Einbauten, so nicht in der Lage sein, sich dazu zu äußern. Im schlimmsten Fall können Sie besser dran mit dem .NET-Proxy sein dll direkt in Ihrem Orchestrierung (Ausdruck oder eine Nachricht Shape) und nicht den Aufbau eines Adapters. Auch wenn es nicht Ansatz empfohlen, immer noch das Gefühl ich es ist besser als benutzerdefinierter Adapter Ansatz.

Andere Tipps

Semantisch, ich sehe nicht, warum eine Lösung, die einen WCF-BasicHtpp Adapter beinhaltet nicht in Ihrem Szenario arbeitet. Auf jedem Fall würde ich versuchen, auf jeden Fall zu sehen, was mit einem WCF-BasicHttp Adapter geschieht, und wenn ich eine Arbeitslösung erhielt, würde ich auf einen benutzerdefinierten SOAP-Adapter wechseln, wenn das wirklich notwendig ist.

Derzeit Ihre Lösung ist seltsam - in dem Sinne, dass Sie eine On-Ramp direkt an einen Off-Ramp verbunden. Ich habe noch nie, dass in keinem meiner Routen gesehen. Möglicherweise müssen Sie ein Zwischen Messaging oder Orchestrierung Reiseroute Service in betweeen erstellen.

Ansonsten effektiv die Nachricht an das Nachrichtenfeld veröffentlicht wird und offensichtlich gibt es keine Abonnenten für sie, damit der Fehler auftreten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top