DBMS_AQ. DEQUEUE multi single consumer thread
Hi all
I have a table of Q for advanced queue. The line runs for a single consumer.
Currently, I have four tasks at the same time of waiting for the messages of the qtable above with the following properties.
DECLARE dopt DBMS_AQ.DEQUEUE_OPTIONS_T; BEGIN dopt.WAIT := DBMS_AQ.NO_WAIT; dopt.navigation := DBMS_AQ.FIRST_MESSAGE; dopt.dequeue_mode := DBMS_AQ.REMOVE; DBMS_AQ.DEQUEUE (queue_name => 'MPI_AQADM.AQ_PDRSYNC_PAID', dequeue_options => dopt, message_properties => mprop, payload => test_data, msgid => msg); COMMIT; -- Use the pay load data to do some thing END;
We are able to dequeue messages in all four jobs with the same code above.
My question is, is this OK to do, there will be expectations or congestion that happens? Y at - it a good or a means to achieve what I want to do in a more stable manner?
Thank you
G.
Hello
> I mean can two different jobs with consumers without name remove the same message?
> But you say it's possible?
No, it is not possible (I do not say this). There are competing situation, wherever one job will be a dequeue.
> Can you also throw some light on what other problems of stability I could face more?
Counterquestion:
Why should you have four jobs in order to remove the data?
There are performance reasons? What of the order (sequence) of your AQ payload data?
If you need more than one dequeue job, it is better to give them names.
Result: many consumers have been appointed.
Kind regards
WoG
Tags: Database
Similar Questions
-
Single Message thread backup icloud?
Hello
I was wondering if there is a way to select a single message to iCloud save thread. The reason: my brother has a 1 year old child and sends a thread of family group about 10 pictures per day, sometimes with a video. This sometimes others form picture answers. My iPhone 16GB 5 fills up quickly. The photos are cute, etc and I don't necessarily want their past (where the issue of backup), I just want to be able to take a picture of mine when I want without memory formidable opinion.
To clarify, I don't want to back up all my posts on iCloud, and I don't want to limit the allocation of memory for messages (it would quickly reach quota). I want to be able to synchronize the thread of interest, then delete it. Is this possible? I have an extra space on iCloud, which would easily handle this.
This is not possible, I'm afraid. Indeed, if you delete something in your phone it don't stay in your back forever, the rear 3 last ups are stored in the cloud.
-
Need a tool to identify the most cpu consuming thread.
I have the database Oracle running on Windows 2008 server edition.
Recently the oracle process has begun to consume 100% cpu it is not the particular moment where it happens.This is why I need a tool to check the particular thread in oracle.exe process consuming more cpu which would help find most cpu of your session in the oracle database.Thank youHello
The Microsoft Answers community focuses on issues and problems related to the consumer environment. Please reach out to the community of professional support in the TechNet below:
http://social.technet.Microsoft.com/forums/en/category/WindowsServer/
-
I can't access some pages (last page) in a multi page forum thread...
I am not always able to navigate to all (recent or past a certain page) pages of a multipage forum thread... It may be the second page or, sometimes, on page 18... VBulletin site... That is to say the work and the previous version work...
Have you started Firefox in saving mode because you wrote that you restarted and safe mode Windows is not intended?
- Help > restart with disabled modules
- https://support.Mozilla.org/KB/safe+mode
If this does not work in mode without failure, then disable all extensions and then try to find out who is the cause by allowing both the problem reappears.
- Choose "Disable all add-ons" on issues to troubleshoot Firefox in Safe Mode to set window to disable all extensions.
- Close and restart Firefox after each change through "file > exit ' (Mac: ' Firefox > leave";) Linux: "file > exit ')
Create a new profile as a test to see if your profile is the source of the problems.
See "basic troubleshooting: a new profile:
There may be extensions and plugins installed by default in a new profile, so check that in "tools > Modules > Extensions & Plugins" in case there are still problems.
If this new profile works then you can transfer files from the old profile to the new profile, but make sure not to copy corrupted files.
See:
-
reduction #of consumer for a queue thread
Hello
I created a service proxy reading messages from a queue and it created 16 default consumer thread.
Is there a way I can configure this number to create less number of threads of consumer?
Published by: 818591 on January 24, 2011 14:10In the WLS console, create a job [http://download.oracle.com/docs/cd/E12839_01/apirefs.1111/e13952/pagehelp/Corecoreworkworkmanagerconfigtitle.html] Manager and associate a desired son constraint equal Max number of threads of consumer.
In OSB, specify this name of Manager working in the policy configuration of the expedition for the proxy service. -
Hello
I have the case study for the notification to the Subscriber specific QA that I had planned to use to send messages to the other sessions without subscriber . I just wanted to know feature QA POSITION.
Well I tried and google hours and reading documentation, but I can't figure out what I did wrong. There is not much information about this post method.
Expected result is a message in the my_queue_debug table, but there is nothing!
Any ideas where it's going?
Oracle 12 c EA
--NAME TYPE VALUE --------------- ------- ----- --aq_tm_processes integer 1 --job_queue_processes integer 1000 --create user aq identified by aq --; --grant dba to aq --; --grant execute on dbms_aq to aq --; create table my_queue_debug(msg varchar2(100)) ; create type my_payload as object (msg varchar2(100)); / set serveroutput on begin dbms_aqadm.create_queue_table('my_queue_table', 'my_payload', multiple_consumers=>true); dbms_aqadm.create_queue('my_queue', 'my_queue_table'); dbms_aqadm.start_queue ('my_queue'); dbms_aq.register ( sys.aq$_reg_info_list( sys.aq$_reg_info('my_queue:aq', dbms_aq.namespace_anonymous, 'plsql://my_queue_callback', hextoraw('FF') ) ), 1 ); end; / create or replace procedure my_queue_callback( context raw, reginfo sys.aq$_reg_info, descr sys.aq$_descriptor, payload raw, payloadl number ) as l_options dbms_aq.dequeue_options_t; l_properties dbms_aq.message_properties_t; l_handle raw(16); l_payload my_payload; begin l_options.msgid := descr.msg_id; l_options.consumer_name := descr.consumer_name; -- dbms_aq.dequeue( queue_name => descr.queue_name, dequeue_options => l_options, message_properties => l_properties, payload => l_payload, msgid => l_handle ); -- insert into my_queue_debug ( msg ) values ( l_payload.msg ); commit; end; / begin dbms_aq.post( sys.aq$_post_info_list( sys.aq$_post_info( 'my_queue:aq', dbms_aq.namespace_anonymous, utl_raw.cast_to_raw( 'my message' ) ) ), 1 ); end; / select user_data from aq$my_queue_table ; select * from my_queue_debug ; drop table my_queue_debug purge ; begin dbms_aqadm.stop_queue('my_queue'); dbms_aqadm.drop_queue('my_queue'); dbms_aqadm.drop_queue_table('my_queue_table'); end; / drop type my_payload ; Table MY_QUEUE_DEBUG created. Type MY_PAYLOAD compiled PL/SQL procedure successfully completed. Procedure MY_QUEUE_CALLBACK compiled PL/SQL procedure successfully completed. no rows selected no rows selected Table MY_QUEUE_DEBUG dropped. PL/SQL procedure successfully completed. Type MY_PAYLOAD dropped.
Hello
change your reminder of PL/SQL procedure, that it will only insert a line:
create or replace procedure my_queue_callback( context raw, reginfo sys.aq$_reg_info, descr sys.aq$_descriptor, payload raw, payloadl number ) as l_options dbms_aq.dequeue_options_t; l_properties dbms_aq.message_properties_t; l_handle raw(16); l_payload my_payload; begin insert into my_queue_debug ( msg ) values ( 'this is a test payload'); commit; end; /
Change the entry in the register of the recall without a consumer:
begin dbms_aq.register ( sys.aq$_reg_info_list( sys.aq$_reg_info('my_queue', dbms_aq.namespace_anonymous, 'plsql://my_queue_callback', hextoraw('FF') ) ), 1 ); end; /
The unit test works now:
SQL> SQL> select * from my_queue_debug; no rows selected SQL> SQL> begin 2 3 dbms_aq.post( 4 sys.aq$_post_info_list( 5 sys.aq$_post_info( 6 'my_queue', 7 dbms_aq.namespace_anonymous, 8 utl_raw.cast_to_raw( 'my message' ) ) ), 1 ); 9 10 end; 11 / PL/SQL procedure successfully completed. SQL> SQL> SQL> exec dbms_lock.sleep(10); PL/SQL procedure successfully completed. SQL> SQL> select * from my_queue_debug; MSG ----------------------------------------------------------- this is a test payload
It is important to do not query the table immediately after the message. The callback mechanism needs a bit of time.
Kind regards
WoG
-
Multi between 5.2 and 6.3.1 replication
I have a setup where I have a master running consumer version 5.2 and about 15 (slaves) who have been upgraded to 6.3.1. I now want to create a topology of master multi by the promotion of one of these consumers as a master and always keep the used 5.2 because we have a bunch of other applications that depend on the instance of 5.2. Our master has two suffixes. The master server is also the authority of cert CA for all consumers. After reading the docs, I have narrowed down the procedure to
1 promote one of the 6.3.1 consumers to the hub, then to master using promote repl dsconf orders. The problem here is that I don't know how I can create a single consumer who can slave the two suffixes. We currently have them being enslaved to different consumers.
Also do I have to stop existing replication between captain 5.2 and would be 6.3.1 master to popularize the hub and master.
2 set the replication Manager manually or using game-server-prop dsconf on the new 6.3.1 master.
3. create a new replication of 5.2 to 6.3.1 master agreement without initializing. (using the java console)
4 create new replication agreement, 6.3.1 to 5.2 (using the command line)
5. create new repl agreements between the new 6.3.1 master and all other consumers. For that I have to start by disabling all agreements between 5.2 and 6.3 or can I create new agreements without turning off the 'old'?
6 initialize 6.3.1 master 5.2.
My biggest concern is at this time surrounding ssl certificates and the existing approvals, consumers have with the master of 5.2. Currently my 5.2 server acts CA of our management of certificates with the slaves of ldap authorization. How can I migrate this functionality on the new server and also will it affect how slaves communicate on the new master server?
Thanks in advance.The situation of having teachers who cannot replicate to all other masters is something you need to fix, because that's probably what could cause a blockage of the replication.
Anyway, back to your environment, if you initialized the 6.3.1 masters with 5.2 content and to put in place already 5.2-> 6.3.1 replication you should be ok.
The steps you described are correct and you can perform while the servers are on the rise and running, just check if you have to change also the property of "auth-bind-dn" of the replication agreement.
Finally, the creation-repl-agmt creates just the replication agreement, it is not initialize the target.
You can check the status with:
# dsconf see the repl-agmt-registered - p 389 dc = xxxxx, dc = com <5.2-master>: 389
HTH,
5.2-master>
Marco -
Call any thread DLLs the application crashes
I have a built in 2015-labview application that acquires spectra of 6 spectrometers via an external dll. The dll triggers an event in labview when data is ready to be pulled from the spectrometers. Since this event, I am running a reentry no void / vi which contains a node function to retrieve the data, that are configured to run in any thread, as it gives a drastic improvement of performance as apposed to run in the UI thread.
However this can slow down the application crash with a message from windows like the following journal:
Name of the failing application: axiom 2.0.exe, version: 1.0.0.82, time stamp: 0x5581a6b7
The failed module name: lvrt.dll, version: 15.0.0.4024, time stamp: 0x5581ac03
Exception code: 0xc0000005
Offset: 0x0000000000bec7c0
ID of the process failed: 0x15c0
Start time of application vulnerabilities: 0x01d11e6face9febd
The failing application path: C:\Axiom 2.0\builds\Axiom 2.0\Axiom 2.0.exe
Path of the failing module: C:\Program NIUninstaller Instruments\Shared\LabVIEW Run-Time\2015\lvrt.dll
Report ID: 7d4ef3a8-8a91-11e5-94e9-90b11c894ef8I don't know if the dll is said to be thread safe or not. Also I do not understand how this causes a problem anyway since it is the only node that accesses the dll at the time, and each of the 6 spectrometers are interviewed in order?
Is there anyway that I can still enjoy the benefits that the call of any thread dll provides without causing my application crash.
An example of the increase in performance, it's that I can query the spectrometer from 6 to 70-80 Hz when configured to run in any thread, as opposed to a simple 10 Hz when the Run value in the UI thread.
Thank you
Jimmy01 wrote:
I don't know if the dll is said to be thread safe or not. Also I do not understand how this causes a problem anyway since it is the only node that accesses the dll at the time, and each of the 6 spectrometers are interviewed in order?
Is there anyway that I can still enjoy the benefits that the call of any thread dll provides without causing my application crash.
Looks like that the DLL is not thread-safe. If you do not run in the UI thread, there is no guarantee that the DLL will be always called from the same thread, even if you only call it in one no reentrante Subvi. By default, LabVIEW allocates multiple threads by the enforcement system, with the exception of the user interface. If the DLL stores certain information of one call to the other, this context can be lost when run in a different thread.
Here's a thread that provides two possible solutions; a wrapper DLL is required, use the other the utility 'threadconfig' (or the corresponding INI file settings) to force a subsystem of a thread executing unique http://forums.ni.com/t5/LabVIEW/Force-DLLs-to-tun-in-the-same-thread-expect-the-UI-Thread/td-p/11438...
Another option would be to put the call to the DLL in a timed loop that runs constantly, and you can use a queue or the notifier to pass data to. A timed loop runs in a single dedicated thread, so I think it will work.
-
Learn how to use queues producer consumer event
Hi all
I'm trying to understand the good programming techniques for the use of the elements of the queue in a producer / consumer event-driven program. I am looking for some demonstration programs have an idea of the functioning of these looops-based. Currently, I'm not sure on how to deal with errors that occur before an event from the queue (see screen capture below).
If a queue receives an error, it seems that the queue item is never received. I have an OR statement to stop the producer loop when it receives an error message. However, because the question has never been in queue, dequeue in the consumer just loop element crashes then the consumer don't never closed loop the while loop.
What are some good techniques to handle errors that are placed in a queue? I could probably cable a timeout on the dequeue, but I prefer not to use this approach if possible.
Thank you
-
Why almost all javafx methods must be called from the thread of the application?
I have a pretty big 3D scene that is refreshed every few seconds.
It takes a while to update the scene, and I wanted to do it in a background thread.
Problem is that almost every approach I take requires the application-fx thread.
Now, I understand that change the UI itself must be called in the application thread, so I tried a different approach:
Create a new group, add all the nodes (which takes the greatest amount of time) and update the component root of the view with the new group.
I assumed that only the last party required the application thread, but alas this was not the case.
group.getChildren () .add also requires that the thread of the application. Why?
node.setLayoutX () also requires that the thread of the application. Why?
It is a new set of nodes that are not visible and groups yet, so why can't do this in a background thread?
The reasons of principle (I think) that JavaFX is mainly a single toolbox threaded are described in:
https://weblogs.Java.net/blog/2004/10/19/multithreaded-toolkits-failed-dream
That said, if you manipulate objects that are not part of an active scene, then it should work. The dream that failed has what to do with the components who participate actively in the molten, interactive GUI. If you're interacting with only the components out of the screen, then it (should be) without issue.
Please, create and post an example minimum, executable that replicates the question.
(Please ensure that the example is minimal and executable).
In addition, what is the cause as your application "takes some time to update the scene? Computers are today quite incredibly fast. Of course, there are valid reasons for some things take time, I wonder what these are in your case. What is the time? If your executable example can include something reasonably representative of what you're done which shows something that will take "some time", would be great.
What you have described so far, I feel that, even if there is no problems with threads, your proposed approach would not fix your performance problem.
-
How one thread can run multiple runnables?
Hi What follows is 1.6 api documentation
It should provide the Runnable when the thread is built himself, and once the thread ends the execution of its run the thread method is dead and cannot be started again as a thread.Executors.newSingleThreadExecutor() Creates an Executor that uses a single worker thread operating off an unbounded queue.
But the doc above indicates that a single worker thread is enough to execute Runnables queue. How it possible?Myriam wrote:
But the doc above indicates that a single worker thread is enough to execute Runnables queue. How it possible?Nothing prevents you from creating a Thread that has a list of Runnables and call its run() method one after the other.
new Thread(new Runnable() { public void run() { for(Runnable r : listOfRunnables) r.run(); } } }).start();
Threading tips base.
-
DSP generator for android multi folio app needed?
Hello, I am trying to create an app for android tablets. I need only a single edition of the DSP, but read that the DSB generator offers multi single folio apps for androids have I need a DSP Professional license?
Thanks for any help.
Currently, creating Android applications is available with professionals of DPS and business licenses. With simple editing of DPS, you can create an iPad only app.
-
job creation for listening to the queue unique consumer
I have the code that will allow listening on a queue for a queue of the mulitple consumer but I was wondering how to change it to a queue of each consumer. The code that I currently have for the many conusmer looks like this
DBMS_SCHEDULER. () DEFINE_METADATA_ARGUMENT
program name = > 'P_ToDBlocking_Implement '.
argument_position = > 1
, metadata_attribute = > 'EVENT_MESSAGE '.
);
dbms_scheduler. Enable ('P_ToDBlocking_Implement');
DBMS_SCHEDULER. () CREATE_EVENT_SCHEDULE
schedule_name = > 'S_ToDBlocking_Implement '.
, start_date = > systimestamp
, event_condition = > ' corrid'art = "NOTIFY" '
queue_spec = > 'event_msg_q');
Maybe I think over this evil how can I get a consumer in a queue single consumer to listen to the queue and process all queues that come in?
Published by: user457357 on Sep 12, 2008 12:19 AMMakes sense. But why take away with work planned and not with a stored procedure?
Take a look at this demo:
http://www.psoug.org/reference/aq_demo1.htmlWhat features do you need not included in the demo?
-
Advanced Queuing (correlation id feature)
Nice day!
I'm studying Oracle Advanced Queuing concepts and have faced with the idea that I don't understand: correlation id feature. I'd be happy if someone could clarify this matter for me.
Say we have several of your queue and I add a subscriber to it and I'm specifies the rule to dequeue for this Subscriber:
begin dbms_aqadm.add_subscriber(queue_name => 'aq_admin_plsql.msg_queue' ,subscriber => sys.aq$_agent(name => 'APP1', address => null,protocol => null) ,rule => q'[corrid='111']'); end; /
I guess the part above the code means that the consumer "APP1" can only dequeue messages with message_properties.correlation: = '111';
Am I correct in saying this and if not what one hears the argument of rule for?
Unfortunately, my hypothesis seems to be false. I would like to show the test case to explain.
CONNECT / as sysdba CREATE USER aq_admin_plsql IDENTIFIED BY aq_admin_plsql DEFAULT TABLESPACE users TEMPORARY TABLESPACE temp; ALTER USER aq_admin_plsql QUOTA UNLIMITED ON users; GRANT aq_administrator_role TO aq_admin_plsql; GRANT connect TO aq_admin_plsql; GRANT create type TO aq_admin_plsql; GRANT create sequence TO aq_admin_plsql; grant resource to aq_admin_plsql; grant create procedure to aq_admin_plsql; EXECUTE dbms_aqadm.grant_type_access('aq_admin_plsql'); ; grant create procedure to aq_admin_plsql; EXECUTE dbms_aqadm.grant_type_access('aq_admin_plsql');
CONNECT aq_admin_plsql/aq_admin_plsql CREATE TYPE message_type AS OBJECT ( message_id NUMBER(15) , subject VARCHAR2(100) , text VARCHAR2(100) ) / CREATE SEQUENCE message_seq INCREMENT BY 1 START WITH 1000 NOMAXVALUE NOCYCLE;
CONNECT aq_admin_plsql/aq_admin_plsql SET SERVEROUTPUT ON BEGIN -- ------------------------------------------------------- DBMS_AQADM.CREATE_QUEUE_TABLE ( queue_table => 'aq_admin_plsql.msg_qt' , queue_payload_type => 'aq_admin_plsql.message_type' , sort_list => 'priority,enq_time' , multiple_consumers => TRUE ); -- ------------------------------------------------------- DBMS_AQADM.CREATE_QUEUE ( queue_name => 'msg_queue' , queue_table => 'aq_admin_plsql.msg_qt' , queue_type => DBMS_AQADM.NORMAL_QUEUE , max_retries => 0 --max number of dequeue retries (rollbacks) before moving to exception queue , retry_delay => 0 --after failure, delay before msg can be dequeued again , retention_time => 100 --time in which msg remains in the queue table after dequeuing , dependency_tracking => FALSE -- not currently implemented , comment => 'Test Object Type Queue' , auto_commit => FALSE --deprecated ); -- ------------------------------------------------------- DBMS_AQADM.START_QUEUE('msg_queue'); -- ------------------------------------------------------- dbms_aqadm.add_subscriber(queue_name => 'aq_admin_plsql.msg_queue' ,subscriber => sys.aq$_agent(name => 'APP1', address => null,protocol => null) ,rule => q'[corrid='111']'); END; /
Now, the queue of the message with the correlation id say '222'.
CONNECT aq_admin_plsql/aq_admin_plsql DECLARE enqueue_options DBMS_AQ.ENQUEUE_OPTIONS_T; message_properties DBMS_AQ.MESSAGE_PROPERTIES_T; message_handle RAW (16); MESSAGE aq_admin_plsql.MESSAGE_TYPE; BEGIN MESSAGE := AQ_ADMIN_PLSQL.MESSAGE_TYPE (aq_admin_plsql.message_seq.NEXTVAL, 'Subject: EXAMPLE MESSAGE', 'Message: THIS IS A SAMPLE MESSAGE.'); ------------------------------------------------------------------------ enqueue_options.VISIBILITY := DBMS_AQ.ON_COMMIT; --ON_COMMIT - the enqueue is part of the current transaction enqueue_options.SEQUENCE_DEVIATION := NULL; --deprecated ---------------------------------------------------------------------------- message_properties.priority := -5; --priority of message. Smaller number = higher priority, may be negative. message_properties.delay := DBMS_AQ.NO_DELAY; --Is the number of seconds for which the message is in the WAITING state. message_properties.expiration := DBMS_AQ.NEVER; --Is the number of seconds during which the message is available for dequeuing, starting from message_properties.correlation := '222'; --Is an identifier supplied by the producer of the message at the time of enqueuing the message. message_properties.recipient_list(1) := sys.aq$_agent('APP1', null, null); ------------------------------------------------------------------------------------------------------------ DBMS_AQ.ENQUEUE (queue_name => 'aq_admin_plsql.msg_queue', enqueue_options => enqueue_options, message_properties => message_properties, payload => MESSAGE, msgid => message_handle --out_parameter ); COMMIT; ---------------------------------------------------------------------------------------------- END; /
We can verify that the message has managed to put in the queue.
select t.MSG_ID, t.CORR_ID, t.MSG_STATE, t.CONSUMER_NAME from aq$msg_qt t ;
MSG_ID(2) CORR_ID MSG_STATE CONSUMER_NAME 14506AAED0CCBA48E055000000000001 222 LOAN APP1 Now, I do the dequeue the message defines the name of the consumer to "APP1" and I think that the message will not be removed because we have a rule for this Subscriber: corrid'art = '111'
DECLARE dequeue_options DBMS_AQ.DEQUEUE_OPTIONS_T; message_properties DBMS_AQ.MESSAGE_PROPERTIES_T; message_handle RAW (16); MESSAGE aq_admin_plsql.MESSAGE_TYPE; BEGIN ------------------------------------------------------------ dequeue_options.consumer_name := 'APP1'; --Indicates the consumer for multi-consumer queues. dequeue_options.dequeue_mode := DBMS_AQ.remove; dequeue_options.navigation := DBMS_AQ.FIRST_MESSAGE; dequeue_options.visibility := DBMS_AQ.IMMEDIATE; dequeue_options.wait := DBMS_AQ.FOREVER; dequeue_options.msgid := NULL; -------------------------------------------------------------- DBMS_AQ.dequeue (queue_name => 'aq_admin_plsql.msg_queue', dequeue_options => dequeue_options, message_properties => message_properties --out parameter , payload => MESSAGE --out parameter , msgid => message_handle --out parameter ); DBMS_OUTPUT.put_line ('+-----------------+'); DBMS_OUTPUT.put_line ('| MESSAGE PAYLOAD |'); DBMS_OUTPUT.put_line ('+-----------------+'); DBMS_OUTPUT.put_line ('- Message ID := ' || MESSAGE.message_id); DBMS_OUTPUT.put_line ('- Subject := ' || MESSAGE.subject); DBMS_OUTPUT.put_line ('- Message := ' || MESSAGE.text); COMMIT; END; /
However, the message seems to be removed:
select t.MSG_ID, t.CORR_ID, t.MSG_STATE, t.CONSUMER_NAME, t.DEQ_TIME, t.DEQ_USER_ID, t.DEQ_TXN_ID from aq$msg_qt t ;
MSG_ID(2) CORR_ID MSG_STATE CONSUMER_NAME DEQ_TIME DEQ_USER_ID DEQ_TXN_ID QUEUE 14506AAED0CCBA48E055000000000001 222 PROCESSED APP1 22.04.2015 16:53:11 AQ_ADMIN_PLSQL 8.29.2818 MSG_QUEUE It seems strange, isn't it?
To put it in a Word so my question is:
1. How could the queue breaking the rules of correlation id? If it works as designed then what is the reason for the correlation id?
I thank very you much in advance! I'd appreciate any help.
Hello
your problem in your example is that you have addressed your message explicitly to the Subscriber (line #21):
message_properties.recipient_list(1) := sys.aq$_agent('APP1', null, null);
This Subscriber will still get the info that there are new messages. Normally, you do not know the subscribers for messages
and you don't publish it. If you remove this line then the rule is analyzed. For the payload parameter value "YYY", you will get:
ORA-24033: no recipients for message
Kind regards
WoG
-
Update of the indicators of the façade is trolling in the test of the functions in the provider DLL
I'm looking to see if someone can explain a behavior to display weird LabVIEW I see when to test some timeout works in a third party DLL. I have a work around in place but I would still like to know why, without the workaround, the information displayed by the indicators on the front panel are not synchronized with what is happening in the execution of the VI, even though I tried all sorts of things to impose the synchronization. Note that to run the VI in a useful way, you need to be able to communicate with a Galil axes via an Ethernet controller, and which, for the most part, limited this discussion to what the experts among you know happen under the hood of LabVIEW in situations like this.
This is what looks like the VI when my work around (false wait added) is active. It's a small state machine that uses the elements of the array "Test Sequence" to tell him what to do in each step of its implementation. Here he plays a first time-out value, sets a new value of timeout, reading again, the timeout by asking a READING of the controller (without having first asked to say anything), followed by restoring the initial time-out and then tests to stop. The two indicators in the red rectangle are there to show the current status of the execution, and it is this pair of indicators which are not synchronized with the State of the actual program.
When execution completes, it is what we see.
If the false timeout is too short, then the indicators are not synchronized with the State of the program, or in this case, with the other. Note that the only time wherever the VI display is static enough for me to take a screenshot as it is during the period of "Test Timeout. When the time-out occurs Finally, things be synchronized and the same results are displayed.
Here's the code. I am also attaching a folder zipped with the code, just because I don't know if the extracts are smart enough to include all the dll referenced by library call nodes.
Here on the left of the loop indicator 'State' and 'Index' terminals can be seen. The 'fake Wait' needed to make the indicators work synchronously appears below in the same area. Before coming with this 'fix' things I've tried, what has not worked, were:
- addition of the structure of flat sequence seen here with the indicators in the first panel
- Entrance to the 'value' property nodes using linked to two indicators with their outputs error Garland at the entrance of the error on the function 'G Read' (test timeout).
- defining indicators for "synchronous display" (apparently this parameter actually only works with the multi-threaded code, which I don't believe it is)
- setting false property to "postpone updates on the front panel.
Another thing that worked linked a "probe" to any data path entrance side of the conditional structure. I thought that it causes also a few milliseconds of delay as the expectation.
My best guess at what happens is that display updates are "launch and forget" actions that occur on parallel execution paths in the single execution thread and function on obtaining some of the main process to complete time slices. But when the main process is the name of an external library, which, outside the library can't share time with all other processes that can run in the same thread. All this makes sense?
This is because all these CFLN calls to the dll are set to run in the UI thread (to view the color orange on the top of the node).
If they eat the cycles in the UI thread, they may not leave enough cycles to LabVIEW to make updates to the user interface of the front panel.
What make these 3 part of the dll? They need to run in the UI thread? Is there a problem with the standby so that the DLLs are not pounding the UI thread?
Maybe you are looking for
-
Can't close my account why?
I phoned your service to try to close my account, they can do that, why? Also, I tried online doing the same thing, why this will not work? My contact details are * address email is removed from the privacy * Phone number 01612249483 ID is 0006400095
-
Drive external DRIVE no longer works after windows is running 10 updates
DTMB BDA TV USB Now get the above results. Past the USB ports but... does not really feel ticked off the coast with this problem. P.S. The good external drive on my laptop running windows 7 pro.
-
This type of microphone is necessary for google voice?
I want to just make/receive calls with google voice. What mic do I need?
-
ACL IP and TCP ACL... What is the difference?
Hello I have a few questions on the ACL. 1. for PIX ACL, let's say I want to host a Web server in the network internally (just to simplify my question), and I do not PAT, but only a static NAT public static 202.188.100.1 (Interior, exterior) 10.1.1.1
-
Original title: missing dll file A DLL (msypd.dll) was damaged by a virus and moved to the virus vault and cannot be resolved. How can I replace this file?