我最近开始尝试通过WSO2的MB在WSO2 ESB之间进行消息交换以满足要求。创建了一个JMS发送方代理服务,它根据SOAP输入(使用的Header属性和defaultEndpoint)连接端点URL。
在Message Broker上:
已将 根|
节点1
节点2
3个用户及其特定角色,如Root,Node1,Node2。要求是节点1应该能够订阅节点1和根,类似地,对于节点2,仅节点2和根。
问题是在创建代理服务时,订户只能将其设置为仅订阅一个节点(Root或Node1或Node2)。尝试将目标设置为Root。#但随后所有节点都已订阅(即使Node Meer未设置为基于基于角色的主题访问来订阅另一个节点)。以下是订阅者的代码 jndi.properties: 是否存在订阅者可以在层次结构中订阅多个主题并且其访问权限由用户和角色控制的方式?enter code here
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse"
name="Subscriber_Node2"
transports="jms"
statistics="disable"
trace="disable"
startOnLoad="true">
<target>
<inSequence>
<property name="OUT_ONLY" value="true"/>
<log level="full"/>
<log level="custom" separator="###">
<property name="STATE"
value="**************** RECEIVED AT Node 2 ***************"/>
</log>
<drop/>
</inSequence>
<outSequence/>
<faultSequence>
<log level="custom">
<property name="text" value="An unexpected error occured"/>
<property name="message" expression="get-property('ERROR_MESSAGE')"/>
<property name="code" expression="get-property('ERROR_CODE')"/>
<property name="detail" expression="get-property('ERROR_DETAIL')"/>
<property name="exception" expression="get-property('ERROR_EXCEPTION')"/>
</log>
</faultSequence>
</target>
<parameter name="transport.jms.ContentType">
<rules>
<jmsProperty>contentType</jmsProperty>
<default>application/xml</default>
</rules>
</parameter>
<parameter name="java.naming.factory.initial">
org.wso2.andes.jndi.PropertiesFileInitialContextFactory
</parameter>
<parameter name="transport.jms.ConnectionFactory">
Store2TopicConnectionFactory</parameter>
<parameter name="java.naming.provider.url">
repository/conf/jndi.properties</parameter>
<parameter name="transport.jms.DestinationType">topic</parameter>
<parameter name="transport.jms.Destination">HQ.Store_2</parameter>
<description/>
</proxy>
connectionfactory.Node1TopicConnectionFactory = amqp://Node1:Node1@clientID/carbon?
brokerlist='tcp://localhost:5680'
connectionfactory.Node2TopicConnectionFactory = amqp://Node2:Node2@clientID/carbon?
brokerlist='tcp://localhost:5680'
connectionfactory.RootTopicConnectionFactory = amqp://Root1:Root1@clientID/carbon?
brokerlist='tcp://localhost:5680'
topic.Root = Root
topic.Root.Node1 = Root.Node1
topic.Root.Node2 = Root.Node2