ActiveMQ Artemis



Important for documentation:

CORBA Problem: The Notify Service has several limitations, such as being

resource intensive and not scaling well with the number of

subscribers.

Requirements: should be as transparent as possible

having the same features and requirements of the previous

Notify Service implementation.

ACS Notification Channel alternative should hide as

much of DDS as possible.

∙ It must be possible to set QoS properties of channels.

∙ Event channels should never discard events and events

should be delivered to consumers in a timely manner.

[ Insertar documentación de Artemis acá]



As a default, on the Linux platform, if you have IPV6 support enabled in your kernel, the Java Runtime (since 1.4 version) will use IPV6 sockets to communicate. That’s perfectly fine, except that your network may not be configured for IPV6. So everything will be dropped…and nothing will ever be received on the consumer side (which maybe even does not support IPV6).

There’s a solution to this problem: Force IPV4 stack to be used by the Java Runtime. This can be done using a system property:

-Djava.net.preferIPv4Stack=true

IMPORTANT:

When creating the broker, this must be done using:

${ARTEMIS_HOME}/bin/artemis create --allow-anonymous --silent --force --user almamgr --password alma123 --port-offset 0 --data ./data --allow-anonymous --no-autotune --verbose --aio --java-options -Djava.net.preferIPv4Stack=true {target_dir}/mybroker --java-options 

And this will create a broker that uses IPV4.

In the case of the broker created for this project, it is called “mybroker2”.


AMPQ Clients


According to the Requirements

#TitleUser StoryImportanceStatusNotes
1API must be available in C++, Java and PythonDevelopers use those three languages to implement the different parts of ALMA software, therefore the API must be provided in those three languagesMust Have
  •  
qpid supports all 3 languages
2The Notification Channel API must hide as much as possible of the underlying technologyThe API must be common for all the technologies used to implement this API. This includes CORBA at the beginningMust have
  •  

3The possibility of setting the quality of service and administrative properties of channels must exist.Each channel has different QoS requirements based on the role they play in whole ALMA system. The user must be able to set this up using the Configuration DatabaseMust Have
  •  

4The API must be implemented in a high-performance manner to reduce the chances of events being discarded, if the QoS settings are set properly.Each client (publisher or subscriber) must perform accordingly to prevent slow participants. The sending and reception of events should be done as quickly as possible. Each client consuming events from the API is responsible to handle each event timely, otherwise events could be lost.Must Have
  •  

5Notification Channel must decouple publishers from subscribers.
Must Have
  •  

6Notification channel shall deliver events based on best-effort or reliable way. Depending of the QoS configuration.
Must Have
  •  

7Events should be delivered to consumers in a timely mannerThe events must be sent and received with the lowest latency possible. Acceptable values are in order of 100 [ms]Must Have
  •  

8Notification channel must support re-connection of clientsIf the Event Channel goes down, the Channel must be re-created automatically. All the clients connected to the Event Channel shall reconnect to it.Must Have
  •  

9Notification Channels must provide introspectionThe services associated, the channels and the clients must offer operational performance parameters introspection, in a way they can be monitoredDesirable
  •  

10Notification channel should be fault tolerantProblems in any network path should not affect communications that do not involve that path
Events should be queued, up to some limit, in network paths that do have a problem.
Data transmission between a publisher and consumer should not require the data be staged in a third place, like a central server.
Must have
  •  

11Maintain event orderEvents between the same publisher and consumer should be delivered in the same orderMust have
  •