- Regardless of the solution (pure JMS, ESB, EAI), should a part be implemented under the horizontal dashed line (application queues)?
Consumers should be implemented in such a way as to work with the solution of your choice, but you do not need to worry about creating a queue for each consumer or distribution logic (assuming that consumers can consume directly from the selected tech)
- How does using ESB (JBoss ESB, etc.) instead of "pure JMS (Active MQ, etc.)) help / hinder? Does ESB provide any advantage over JMS, which is only java (?). I got confused - ESB or JMS, even after referring to topics such as: JMS and ESB - how are they related? There is one answer that says: "JMS is not very suitable for integrating REST services, file systems, S / FTP, electronic mail, Hessian, SOAP, etc., which are better handled by the ESB, which supports these types natively. you have a process that uploads a 500 MB CSV file at midnight, and you want another system to collect the file, analyze the CSV and import into the database, this can be easily reached by the ESB, whereas a solution with just JMS will be bad Similarly, integration of REST services with load balancing / fault tolerance to multiple backend instances can be improved with an ESB that supports HTTP / S natively. "This only added to my confusion !!!
My opinion is that the ESB will complicate this decision too much. He designed (among other things) to help integrate with various technologies, but simpler solutions do it too - for example - Apache Camel provides a very simple way to communicate using a huge variety of vehicles (including ActiveMQ).
Not all JMS implementations are designed to connect to other languages, but ActiveMQ uses this STOMP connector.
- Is using EAI infrastructure (Apache Camel etc.) different from JMS or ESB approach? If so, how and what are the pros / cons?
Apache Camel and JMS are additional technologies such as JMS and ESB. Camel (& Spring Integration) are lightweight, simple and portable. ESBs are much more heavyweight and usually result in more communication with the ESB / application server.
- I was told that the ESB would not help, should BPM (or something else?) Be used to define and store the "routing logic" - is that true?
It depends on your โroutingโ logic, it seems to me that you do not need routing logic, you just need guaranteed delivery to 1payroll consumer and 1 customer support customer. BPM will be more useful if you want to selectively publish data / call a service based on some characteristic of that data.
I highly recommend reading http://activemq.apache.org/virtual-destinations.html using them:
- Send messages to the ActiveMQ broker on a virtual topic, for example. VirtualTopic.X
- Register Payroll and Helpdesk users as consumers in the queues that ActiveMQ dynamically creates in the topic - for example. Consumer.Payroll.VirtualTopic.X. Both consumers of payroll should be registered on one line.
- ActiveMQ will automatically save a token that represents what each consumer set did not consume. This means that 100% of the messages will be processed by the payroll consumer, but the message will not be sent to> 1 payroll consumer.
- Add / remove users as you wish.
NBI believe other products, for example. Apache QPID provides similar functionality - I just am most aware of ActiveMQ and have been successful with this approach
source share