맵 유형의 JMS 메시지를 작성하고 큐에 넣으려고합니다. 그렇게 할 때 는하지만 난 문제가 v_id := v_msg.clear_body(-1);
호출에 의해 야기 될 것으로 보인다이Oracle 데이터베이스에서 jms 맵 메시지 작성시의 예외
DECLARE
v_id pls_integer;
v_msg sys.aq$_jms_map_message;
v_msg_agent sys.aq$_agent;
v_msg_proparray sys.aq$_jms_userproparray;
v_msg_property sys.aq$_jms_userproperty;
v_msg_header sys.aq$_jms_header;
v_enqueue_options dbms_aq.enqueue_options_t;
v_msg_properties dbms_aq.message_properties_t;
v_msgid raw(16);
BEGIN
v_msg_agent := SYS.AQ$_AGENT(' ', NULL, 0);
v_msg_proparray := SYS.AQ$_JMS_USERPROPARRAY();
v_msg_proparray.EXTEND(1);
v_msg_property := SYS.AQ$_JMS_USERPROPERTY('JMS_OracleDeliveryMode', 100, '2', NULL, 27);
v_msg_proparray(1) := v_msg_property;
v_msg_header := SYS.AQ$_JMS_HEADER(v_msg_agent,NULL,'<USERNAME>',NULL,NULL,NULL,v_msg_proparray);
v_msg := sys.aq$_jms_map_message(v_msg_header,NULL,NULL,NULL);
v_id := v_msg.clear_body(-1);
v_msg.set_string(v_id, 'STRING', 'Test');
v_msg.flush(v_id);
v_msg.clean(v_id);
dbms_aq.enqueue(queue_name => 'SEND_QUEUE',
enqueue_options => v_enqueue_options,
message_properties => v_msg_properties,
payload => v_msg,
msgid => v_msgid);
END;
같은 외모를 사용하고
ORA-29516: Aurora assertion failure: Assertion failure at eox.c:359
Uncaught exception Root of all Java exceptions: java.lang.UnsatisfiedLinkError sun.net.PortConfig.getLower0
ORA-06512: at "SYS.DBMS_JMS_PLSQL", line 498
ORA-06512: at "SYS.AQ$_JMS_MAP_MESSAGE", line 79
ORA-06512: at line 20
29516. 00000 - "Aurora assertion failure: %s"
*Cause: An internal error occurred in the Aurora module.
*Action: Contact Oracle Worldwide Support.
는 SQL 다음과 같은 오류를받을 수 있습니다. 동일한 구성이 텍스트 메시지 유형에서 작동하기 때문에이 문제를 어떻게 해결할 수 있는지 잘 모르겠습니다. 하지만 그 id 매개 변수를 사용하지 않습니다 (그래서 나는 clear_body 호출 할 필요가 없습니다).
v_msg := sys.aq$_jms_text_message(v_msg_header,NULL,NULL,NULL);
v_msg.text_vc := 'test';
v_msg.text_len := LENGTH(v_msg.text_vc);
내 대기열 구성에 관해서는 나는 다음과 같은 설정
DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table=>'PRODUCER_QUEUES', multiple_consumers=>TRUE, queue_payload_type=>'SYS.AQ$_JMS_MAP_MESSAGE');
DBMS_AQADM.CREATE_QUEUE_TABLE(queue_table=>'CONSUMER_QUEUES', multiple_consumers=>FALSE, queue_payload_type=>'SYS.AQ$_JMS_MAP_MESSAGE');
DBMS_AQADM.CREATE_QUEUE(queue_name => 'SEND_QUEUE', queue_table => 'PRODUCER_QUEUES');
DBMS_AQADM.CREATE_QUEUE(queue_name => 'RECEIVE_QUEUE', queue_table => 'CONSUMER_QUEUES');
DBMS_AQADM.START_QUEUE(queue_name => 'SEND_QUEUE');
DBMS_AQADM.START_QUEUE(queue_name => 'RECEIVE_QUEUE');
DBMS_AQADM.ADD_SUBSCRIBER(queue_name => 'SEND_QUEUE', subscriber => sys.aq$_agent(NULL, 'RECEIVE_QUEUE', NULL));
DBMS_AQADM.SCHEDULE_PROPAGATION(queue_name => 'SEND_QUEUE', latency => 0);
사람이이 예외를 발생 무엇을 말할 수를 사용합니까?
미리 감사드립니다.