sirve settitle que para java jms message-queue amqp mq

para que sirve settitle en java



¿Existen servidores MQ que puedan ejecutarse incrustados en un proceso Java? (2)

El cliente de WebSphere MQ tiene la capacidad de realizar un pub / sub de multidifusión . Esto proporciona una capacidad de cliente a cliente que pasa por alto el gestor de colas, aunque se requiere un gestor de colas para establecer la conexión.

Estoy investigando soluciones de colas para una de las aplicaciones de mi equipo. Lo ideal es que nos gustaría algo que se pueda configurar como un intermediario en proceso ligero (para mensajes de bajo rendimiento entre subprocesos) y como un intermediario externo. ¿Hay un servidor MQ por ahí que pueda hacer esto? La mayoría parece requerir configuración como una entidad externa. ZeroMQ parece ser el más cercano a una solución en proceso, pero parece ser más un "socket UDP en esteroides", y necesitamos una entrega confiable.


Como dijimos, ActiveMQ es un poco más pesado que ZeroMQ pero funciona realmente bien como un proceso integrado. Aquí un ejemplo simple con Spring y ActiveMQ .

El detector de mensajes que se utilizará para probar la cola:

public class TestMessageListener implements MessageListener { private static final Logger logger = LoggerFactory.getLogger(TestMessageListener.class); @Override public void onMessage(Message message) { /* Receive the text message */ if (message instanceof TextMessage) { try { String text = ((TextMessage) message).getText(); System.out.println("Message reception from the JMS queue : " + text); } catch (JMSException e) { logger.error("Error : " + e.getMessage()); } } else { /* Handle non text message */ } } }

Configuración de contexto ActiveMQ :

<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> <bean id="jmsQueueConnectionFactory" class="org.apache.activemq.spring.ActiveMQConnectionFactory"> <property name="brokerURL"> <value>tcp://localhost:61617</value> </property> </bean> <bean id="pooledJmsQueueConnectionFactory" class="org.apache.activemq.pool.PooledConnectionFactory" destroy-method="stop"> <constructor-arg ref="jmsQueueConnectionFactory" /> </bean> <bean id="queueDestination" class="org.apache.activemq.command.ActiveMQQueue"> <constructor-arg value="messageQueue" /> </bean> <bean id="jmsQueueTemplate" class="org.springframework.jms.core.JmsTemplate"> <constructor-arg ref="pooledJmsQueueConnectionFactory" /> <property name="pubSubDomain" value="false"/> </bean> <bean id="testMessageListener" class="com.example.jms.TestMessageListener" /> <bean id="messageQueuelistenerContainer" class="org.springframework.jms.listener.DefaultMessageListenerContainer"> <property name="connectionFactory" ref="pooledJmsQueueConnectionFactory" /> <property name="destination" ref="QueueDestination" /> <property name="messageListener" ref="testMessageListener" /> <property name="concurrentConsumers" value="5" /> <property name="acceptMessagesWhileStopping" value="false" /> <property name="recoveryInterval" value="10000" /> <property name="cacheLevelName" value="CACHE_CONSUMER" /> </bean> </beans>

La prueba de JUnit :

@ContextConfiguration(locations = {"classpath:/activeMQ-context.xml"}) public class SpringActiveMQTest extends AbstractJUnit4SpringContextTests { @Autowired private JmsTemplate template; @Autowired private ActiveMQDestination destination; @Test public void testJMSFactory() { /* sending a message */ template.convertAndSend(destination, "Hi"); /* receiving a message */ Object msg = template.receive(destination); if (msg instanceof TextMessage) { try { System.out.println(((TextMessage) msg).getText()); } catch (JMSException e) { System.out.println("Error : " + e.getMessage()); } } } }

Las dependencias para agregar al pom.xml :

<!-- Spring --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jms</artifactId> <version>${org.springframework-version}</version> </dependency> <!-- ActiveMQ --> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-all</artifactId> <version>5.6.0</version> <scope>compile</scope> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-pool</artifactId> <version>5.6.0</version> </dependency> <dependency> <groupId>org.apache.activemq</groupId> <artifactId>activemq-core</artifactId> <version>5.6.0</version> </dependency>