Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用PLSQL的具有用户定义属性的Oracle JMS消息_Plsql_Queue_Jms - Fatal编程技术网

使用PLSQL的具有用户定义属性的Oracle JMS消息

使用PLSQL的具有用户定义属性的Oracle JMS消息,plsql,queue,jms,Plsql,Queue,Jms,我在尝试使用PLSQL将消息排队到单个消费者队列时遇到问题,在oracle站点和stackoverflow上都找不到任何帮助 我已经能够在没有用户定义属性的情况下将消息排队,但我似乎无法使用用户定义属性将同一消息排队,这样我就可以使用具有不同消息选择器的两个侦听器 我遇到的问题是,用户定义的属性应该放在dbms_aq.message_properties_t type中包含的user_属性字段中 user_属性字段是对象的SYS.ANYDATA类型,我需要输入一对(key,value) 我试过这

我在尝试使用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');