好的,过去几天我一直在研究这个,但我无法让它消费一条消息。这是我的基本消息模式结构。消息是通过管道(工作、测试)针对此模式创建的。
<?xml version="1.0" encoding="utf-16"?>
<xs:schema targetNamespace="http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG"
xmlns="http://XXCOMPANY.Schemas.adEnqueueRequest"
xmlns:b="http://schemas.microsoft.com/BizTalk/2003"
xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="ENQUEUE">
<xs:complexType>
<xs:sequence minOccurs="1" maxOccurs="1">
<xs:element name="p_queue_name" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
<xs:element name="p_payload" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
<xs:element name="p_message_type" type="xs:string" maxOccurs="1" minOccurs="1" nillable="false" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
发送端口配置为使用 WCF-OracleEBSAdapter 并且我已确认我已正确设置所有环境详细信息(即用户名、密码、TNS 信息。)
我设置的当前 bts 操作是:
<BtsActionMapping xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Operation Name="ENQUEUE" Action="http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG/ENQUEUE" />
</BtsActionMapping>
但是我已经尝试了http://msdn.microsoft.com/en-us/library/dd788171.aspx上的所有操作映射以使其正常工作。每次我的消息暂停并且事件日志显示:
在发送端口“SENDPORTNAME”上使用 URI“SENDPORTURI”发送到适配器“WCF-OracleEBSAdapter”的消息被挂起。
Error details: Microsoft.ServiceModel.Channels.Common.UnsupportedOperationException: Action "http://Microsoft.LobServices.OracleDB/2007/03/XXSCHEMA/Package/XXPAC_AQ_PKG/ENQUEUE" is invalid.
Server stack trace:
at System.Runtime.AsyncResult.End[TAsyncResult](IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.SendAsyncResult.End(SendAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndCall(String action, Object[] outs, IAsyncResult result)
at System.ServiceModel.Channels.ServiceChannel.EndRequest(IAsyncResult result)
Exception rethrown at [0]:
at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
at System.ServiceModel.Channels.IRequestChannel.EndRequest(IAsyncResult result)
at Microsoft.BizTalk.Adapter.Wcf.Runtime.WcfClient`2.RequestCallback(IAsyncResult result)
MessageId: {26BF83FF-742E-4649-8FCC-45729767FF8E}
InstanceID: {CA97B656-FC1A-4884-8A6A-F95D156298ED}
此发送端口的目的是调用 oracle 服务器上的例程,该例程将消息放置在指定的队列中。有没有人成功地做到过这一点?任何人都可以看到我的配置可能有什么问题。任何提示也将不胜感激。