Hello Experts,
I'm in a bit of a pinch right here .
The project is about establishing async messaging in an ADF application. I already know that I can use JMS queue messaging as in the blog:
https://blogs.oracle.com/adf/using-message-driven-bean-and-jms-queue-with-adf
However this time I want to implement queue messaging using RabbitMQ. For the most part I have it done, but there's one small detail that I need to complete. First I will explain the setup.
JDeveloper 12.2.1.2
Java jdk1.8.0_141
RabbitMQ ver 3.7.4
Erlang 20.3 (64-bit)
Steps of reproducing the case:
1- Download Erlang: https://www.erlang.org/downloads
2- Download RabbitMQ: https://www.rabbitmq.com/download.html (Download the windows binary)
For a quick setup/installation reference, you can check this out: https://www.youtube.com/watch?v=gKzKUmtOwR4
After setting up RabbitMQ, you are good to go to start issuing messages. I created an exchange called "Test-Exchange", and a queue named "Test-Queue". check this video to see how, it's pretty much straight forward, you won't get lost
https://www.youtube.com/watch?v=deG25y_r6OY
Advance the video to the time 3:35 to get exactly to the creation of the queue and testing it.
Using RabbitMQ Java API's, I created an ADF application that will keep listening to the queue, fetch the queue message, and display it on the screen. A quick overview of my application ( I will attach it so you can download it, don't worry )
The application consists of 2 Taskflows, the parent taskflow "QueueListener", with a pageFlowScope bean, and the embedded region "DisplayMessage", having just an output text component to display the queue message.

Once a new queue message arrives, I save it in a bean variable "queueMessage" using the method "prepareReceivedMsg". This bean variable is then used as a parameter to the embedded region "DisplayMessage":

Now I run the application (just run the test page "Test.jsf"). Open up the RabbitMQ admin console and insert a queue message:

click on Publish message and then go to the JDeveloper log console:

You will see that the message is received by the ADF application. On our page however, the embedded region has NOT been refreshed:

Eventhough I put the bean variable as an input to the embedded region, and set the "Refresh" property to "if Needed", which, under normal circumstances, should refresh the region. Now I attempt to refresh my page manually (F5), and I notice this:

So the bean variable is indeed being updated!
After some troubleshooting, I noticed that when the listener starts, it seems as if it's in a constant loop that does not end as long as the queue channel is still open, but then again I could be wrong:

Any advice is really greatly appreciated. You can download the application right here: https://drive.google.com/open?id=1d7xxjaz1cv4cq0L0LkiyVEApV89e8DIe
For the RabbitMQ API info and samples for Java, go to: https://www.rabbitmq.com/getstarted.html
Anticipating your feedback,
Best Regards,