我有平面文件架构,我将Infix Root中的Allow Message Breakup设置为true。我还设置了记录最大发生次数1.发送消息并将多个消息发送到发送端口。我在接收和发送端口使用了接收管道(带有平面文件反汇编)和发送管道(XML传输)。直到这个工作正常。
接收端口的输入.txt文件
1000 ABC IT 1001 DEF Maintenece 1002 GHI薪资
输出是三个.xml文件,如
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1000</ID>
<Name>ABC</Name>
<Dept>IT</Dept>
</Employee>
</Record>
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1001</ID>
<Name>DEF</Name>
<Dept>Maintenece</Dept>
</Employee>
</Record>
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1002</ID>
<Name>GHI</Name>
<Dept>Payroll</Dept>
</Employee>
</Record>
现在我只想发送具有特定ID的消息。所以我在项目中添加了一个Orchestration,我正在使用表达式使用决策形状。否则,我不想向发送端口发送任何消息。
Msg(FlatFilewithEnvelop.PropertySchema.ID) == 1000
如果我在接收端口发送相同的消息,我在发送端口收到四条消息(如下所示)。我不知道错误是什么,任何人都可以告诉我这是什么错误。
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1000</ID>
<Name>ABC</Name>
<Dept>IT</Dept>
</Employee>
</Record>
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1000</ID>
<Name>ABC</Name>
<Dept>IT</Dept>
</Employee>
</Record>
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1001</ID>
<Name>DEF</Name>
<Dept>Maintenece</Dept>
</Employee>
</Record>
<?xml version="1.0" encoding="utf-8" ?>
<Record xmlns="http://FlatFilewithEnvelop.FlatFileSchema1">
<Employee xmlns="">
<ID>1002</ID>
<Name>GHI</Name>
<Dept>Payroll</Dept>
</Employee>
</Record>
答案 0 :(得分:3)
可能发生的事情是您最初创建了一个发送端口,其中包含一个订阅消息的过滤器。
然后您创建了一个Orchestration,它也订阅了这些消息并绑定到了发送端口。
如果查看BizTalk Server管理控制台并执行新查询并Search For
Equals
Subscriptions
,您将看到如下所示的发送端口过滤器
Property Operator Value Group by
http://schemas.microsoft.com/BizTalk/2003/system-properties.SPTransportID == {GUID} Or
http://schemas.microsoft.com/BizTalk/2003/system-properties.MessageType == MesageType And
注意订阅如何具有OR,第一个将是端口的GUID,第二个部分将是您添加到端口的过滤器。 由Orchestration发布的绑定到端口的任何消息都会将SPTransportID设置为端口的GUID。
发送端口上的过滤器仍在查找消息,而Orchestration也在向端口发布消息,因此有四条消息。
解决方案。从端口中删除过滤器。
答案 1 :(得分:2)
另一件事是保留您的发送端口订阅并通过对具有所需值的提升字段ID的验证来丰富它并禁用编排。因此,您的邮件只会被发送端口拦截。