Skip to content

Commit

Permalink
Fix typo-s about configuring JMS
Browse files Browse the repository at this point in the history
  • Loading branch information
Martijn Dirkse committed Sep 19, 2024
1 parent d68e8bf commit 75e26c7
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions docs/source/advancedDevelopment/dockerDevel/jms.rst
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
Queues and Java Message Service (JMS)
=====================================

Some Frank applications work with queues to implement the Fire and Forget integration pattern, see :ref:`advancedDevelopmentIntegrationPatterns` and :ref:`advancedDevelopmentIntegrationPatternsFireForget`. When the sender of some message should not await a response before proceeding, the message is put on a queue. The intended recipient later dequeues message and processes it. The recipient is responsible for processing the message and for handling errors. This section explains how to add a queue to a development environment based on Docker.
Some Frank applications work with queues to implement the Fire and Forget integration pattern, see :ref:`advancedDevelopmentIntegrationPatterns` and :ref:`advancedDevelopmentIntegrationPatternsFireForget`. When the sender of some message should not await a response before proceeding, the message is put on a queue. The intended recipient later dequeues the message and processes it. The recipient is responsible for processing the message and for handling errors. This section explains how to add a queue to a development environment based on Docker.

The Frank!Framework is programmed in the programming language Java. A standard has been established about the interface between Java applications and queues, which is named Java Message Service (JMS). The Frank!Framework only supports queueing systems that implement JMS.

Expand All @@ -15,10 +15,12 @@ First, the ``docker-compose.yml`` file has to be extended to add a container wit

The JMS container comes from an image hosted on WeAreFrank!'s server, the same server that holds image ``nexus.frankframework.org/frankframework``. System property ``jms.createDestination`` is set to ``true`` to tell the Frank!Framework that it should create the queues that are referenced in Frank configurations. This is useful during development because it makes it easier to get up and running. In the production environment, queues should be created and maintained by a system administrator and then the Frank!Framework should only reference existing queues. On production, property ``jms.createDestination`` should be ``false``.

System property ``jms.hostname`` is added to make ``resources.yml`` independent of the service name (here ``jms``) chosen for the queue container. Properties ``jdbc.dbms.default`` and ``transactionmanager.type.default: NARAYANA`` are needed to change the Postgresql database used in the downoad zip to a Postresql database that supports XA transactions, transactions that span multiple data-processing systems.
System property ``jms.hostname`` is added to make ``resources.yml`` independent of the service name (here ``jms``) chosen for the queue container. Propert ``transactionmanager.type.default: NARAYANA`` is needed to supports XA transactions, transactions that span multiple data-processing systems.

Second, ``resources.yml`` should be updated so that the Frank!Framework can find the queue:

.. include:: ../../snippets/Frank2Transactions/v510/reference-queue.txt

The queue is given JNDI name ``qcf-artemis``, the by which Frank configurations can reference it. The ``type`` field references the Java class that should be used to access the queue. And the ``url`` is needed by the Frank!Framework to reach the queue that is refenced as ``qcf-artemis`` in Frank configurations. Within the value of the ``url`` field, property ``jms.hostname`` is referenced. If the name of the docker container holding the queue is changed, this property should be updated to hold the new name. Because of the property reference, the ``url`` within ``resources.yml`` does not have to be updated in this case.
The queue is given JNDI name ``qcf-artemis``, the name by which Frank configurations can reference it. The ``type`` field references the Java class that should be used to access the queue. And the ``url`` is needed by the Frank!Framework to reach the queue that is refenced as ``qcf-artemis`` in Frank configurations. Within the value of the ``url`` field, property ``jms.hostname`` is referenced. If the name of the docker container holding the queue is changed, this property should be updated to hold the new name. Because of the property reference, the ``url`` within ``resources.yml`` does not have to be updated in this case.

Above the JMS resource, the JDBC resource is updated to use another database driver, a database driver that supports XA transactions. This is outside the scope of this page.

0 comments on commit 75e26c7

Please sign in to comment.