Create mbean in Mule - monitored by Mule Management Console - mule

We need to monitor HornetQ messaging (part of Jboss) - monitoring is in terms of message arrival in queue, number of messages, messages consumed, auditing message payload. Does HornetQ expose JMX Mbean to monitor this process?
As part of integration strategy this information has to be displayed on Mule Management Console. Mule Management Console can probe only mule instances mbeans. To overcome this we probably need to write custom mbean in Mule which connect to HornetQ messaging, same can be probably displayed on MMC. How do we write custom JMX Mbean on mule and this needs to deployed on to mbean server (agent) and scheduled?
Thanks

Personally I have never tried this before, but it should be possible to instruct HornetQ using an MBeanServer bean to use Mule's JMX server.

Related

How do I find the connection information of a RabbitMQ server that is bound to a SCDF stream deployed on Tanzu (Pivotal/PCF) environment?

This is a follow-up question of How to implement HTTP request/reply when the response comes from a rabbitMQ reply queue using Spring Integration DSL?.
We were able to build the Spring Integration application and the SCDF stream successfully locally. We could send a http request to the rabbitMQ request queue which was bound to the SCDF stream rabbit source. We could also receive the response back from the rabbitMQ response queue which was bound to the SCDF stream rabbit sink.
We have deployed the SCDF stream into PCF environment which had a binding of an internal rabbitMQ broker. Now we need to specify the spring rabbitMQ connection information in the Spring Integration application properties - currently it's using the default localhost#5762, which is no longer valid. Does anyone know how to get this rabbitMQ configuration properties? We already checked the SCDF stream rabbit source/sink log files but couldn't find the information. I know we probably need to check internally whoever set up the SCDF/rabbitMQ in PCF environment, but so far we haven't heard the answers from them.
Also, it appears we can have a different approach that binds both the SCDF stream and the integration application to a separate rabbitMQ instance (instead of using the existing one bundled with the SCDF configuration). Is it a recommended solution?
Thanks,
It is unclear whether you're using the SCDF tile or the SCDF OSS (via manfest.yml) on PCF.
Suppose you're using the OSS, AFA. In that case, you are providing the right RMQ service-instance configuration (that you pre-created) in the manifest.yml, then SCDF would automatically propagate that RMQ service instance and bind it to the apps it is deploying to your ORG/Space. You don't need to muck around with connection credentials manually.
On the other hand, if you are using the SCDF Tile, the SCDF service broker will auto-create the RMQ SI and automatically bind it to the apps it deploys.
In summary, there's no reason to manually pass the connection credentials or pack them as application properties inside your apps. You can automate all this provided you're configuring all this correctly.

How can we store failed messages in VM Connector iin MULE

How can we store failed messages in VM Connector in MULE
Assume it is a transient flow .
Scenario is like when ever mule server is down and at the same time messages sent to publish connector.
what will be best way. Hope I am clear or bear with me for any confusion.
thanks
The VM connector works like a queue in memory, but it is not an external message broker like for example ActiveMQ or IBM MQ. The VM connector implementation is inside the Mule Runtime implementation. It can not be used to send messages to other Mule servers, nor other non-Mule applications. Also if the Mule Runtime instance is down, then it will not work at all so there is not way to publish nor receive messages. If you want that kind of reliability you need to use an external JMS message broker.

How can I test a flow with ActiveMq in local

I'm started to work with Mule and Mule Studio (version 3.5): my goal is rewriting some flows that now is workign, but with a bad syntax.
In this moment I have a flow with some JMS connector and JMS endpoint for acquiring data (my flows are using ActiveMQ 5.10): the configuration XML file is ok and I want to test this flow, but I have'nt a big experience in JMS and system integration.
I think to create a JMS producer and, into run,
start up Mule (with all his flows, endpoints, etc, JMS queues);
start the JMS producer: in run the producer
links to name queue defined in configuration Mule
create a message
send this message to Mule
And the test asserts the
Mule receive the message by the producer
Mule don't loss the message
Mule turn this message to correct flow and relative elaboration
My problem is the lack of manuality and pratical work-ability to link Mule and producer: I tried to use http://activemq.apache.org/hello-world.html but the code is useless for me because it work correctly without Mule, but in my case the tests has to fail if Mule is stopped.
Has everybody any suggest, please?
Just set up an activemq connector without addresss, that will use the default address of vm://localhost that instructs the connector and activemq to act as a local embedded server.
<jms:activemq-connector name="JmsConnector" specification="1.1" />

How to Load Balance Mule ESB without using Mule Management Console

I am working with Mule ESB and instead of using Mule Management Console (MMC). I just want to load balance so that if I am exposing my Mule ESB as a Service so in that case I don't want to use load balancer to balance my Mule ESB , because once the request will come Load Balancer, it is the single point of failure in case if it is down. So I just need a use case how to Expose Mule as a Service with Optimized Load Balancing without using MMC (Mule Management Console).
For load balancing incoming HTTP request, over multiple Mule instances, you will need a external loadbalancer. Mule ESB Enterprise Edition nor MMC will help you with that.
You can use a commercial one, such as a F5 BIP-IP, or setup a HAProxy. To avoid the loadbalancer to be a single point of failure you can setup a redundant HAProxy.
For JMS make sure to setup a external message broker cluster and connect to it using the normal jms:inbound-endpoint that way Mule will act as a competing consumer and you will achieve load balancing of messages.
I would also advice you to have a look at "MuleSoft Blueprint: Load Balancing Mule for Scalability and Availability" that covers this. It is a bit dated but most of the information in there is still valid.
It's unclear what transport are you using, anyhow you have just limited number of options.
Use Mule EE clustering feature for the VM transport.
Use a load balancer
Use a transport that support competing consumers like JMS or AMQP.
Could you provide a more detailed explanation of you deployment so I can provide more extact info?

Setting up WebSphere MQ integration in a WebLogic clustered environment

I have a WebLogic cluster up and running an application containing an MDB. I'm currently using WebLogic JMS queues to send messages to the MDB. All is well.
I now have need to switch to IBM WebSphere MQ for my JMS messaging.
I can set this up and send/receive messages in a non-clustered environment (Admin server) using a Foreign server with a bindings file. However, I can't seem to properly configure the clustered environment for MQ integration to work correctly.
I get the following when deploying the EAR/MDB on the cluster:
The Message-Driven EJB: xxxMDB is unable to connect to the JMS destination...
javax.naming.NameNotFoundException: Unable to resolve 'jms.xxxQueue'
Can anyone point me to some documentation on how to configure IBM WebSphere MQ in a WebLogic cluster?
Thanks!
there is a need to add several MQ JMS classes to the PATH of the weblogic so it will be able to connect to MQ
the path needed to be added is : *MQ_system_path*/java/lib64
beside that here are the clasess i have found that are needed to make this thing :
com.ibm.mq.mqi.jar; com.ibm.mq.headers.jar; com.ibm.mq.jar; commonservices.jar; com.ibm.mq.jms.jar;jta.jar;
this what helped us to connect weblogic to MQ
regards
Oren yeger