使用PLSQL的具有用户定义属性的Oracle JMS消息
我在尝试使用PLSQL将消息排队到单个消费者队列时遇到问题,在oracle站点和stackoverflow上都找不到任何帮助 我已经能够在没有用户定义属性的情况下将消息排队,但我似乎无法使用用户定义属性将同一消息排队,这样我就可以使用具有不同消息选择器的两个侦听器 我遇到的问题是,用户定义的属性应该放在dbms_aq.message_properties_t type中包含的user_属性字段中 user_属性字段是对象的SYS.ANYDATA类型,我需要输入一对(key,value) 我试过这个:使用PLSQL的具有用户定义属性的Oracle JMS消息,plsql,queue,jms,Plsql,Queue,Jms,我在尝试使用PLSQL将消息排队到单个消费者队列时遇到问题,在oracle站点和stackoverflow上都找不到任何帮助 我已经能够在没有用户定义属性的情况下将消息排队,但我似乎无法使用用户定义属性将同一消息排队,这样我就可以使用具有不同消息选择器的两个侦听器 我遇到的问题是,用户定义的属性应该放在dbms_aq.message_properties_t type中包含的user_属性字段中 user_属性字段是对象的SYS.ANYDATA类型,我需要输入一对(key,value) 我试过这
l_obj t_my_type := t_my_type('tol', 'B');
l_anydata SYS.ANYDATA;
其中,t_my_类型定义如下:
CREATE OR REPLACE TYPE t_my_type AS OBJECT (
g_val1 VARCHAR2(20),
g_val2 VARCHAR2(20)
);
然后我就这样做了:
l_anydata := SYS.ANYDATA.convertObject(l_obj);
v_message_properties.user_property := l_anydata;
我把这条信息排成队列:
dbms_aq.enqueue(queue_name => 'queueName',enqueue_options => enqueue_options,message_properties => v_message_properties,payload => v_mv_payload,msgid => v_msg_id);
问题是:message_属性的字段中填充了一个“void”SYS.ANYDATA,因此使侦听器分离
有人能帮我解决这个问题吗
我想的是,我在把复杂对象转换成任意数据的过程中出错了
提前感谢联系Oracle支持部门后,我被告知AQJMS不支持这种实现。
我的需求已通过接收方中的主题得到解决。尝试在dbms_aq.enqueue命令之前添加以下内容:
v_mv_payload.set_string_property('tol','B');