Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance. Project price only 1 $
You can buy this project and download/modify it how often you want.
/**
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.apache.activemq.artemis.jms.example;
import org.apache.activemq.artemis.jms.bridge.JMSBridge;
import org.apache.activemq.artemis.jms.bridge.QualityOfServiceMode;
import org.apache.activemq.artemis.jms.bridge.impl.JMSBridgeImpl;
import org.apache.activemq.artemis.jms.bridge.impl.JNDIConnectionFactoryFactory;
import org.apache.activemq.artemis.jms.bridge.impl.JNDIDestinationFactory;
import java.util.Hashtable;
import javax.jms.Connection;
import javax.jms.ConnectionFactory;
import javax.jms.MessageConsumer;
import javax.jms.MessageProducer;
import javax.jms.Queue;
import javax.jms.Session;
import javax.jms.TextMessage;
import javax.jms.Topic;
import javax.naming.InitialContext;
/**
* An example which sends a message to a source topic and consume from a target queue.
* The source and target destinations are located on 2 different ActiveMQ Artemis server.
* The source and target queues are bridged by a JMS Bridge configured and running on the "target" server.
*/
public class JMSBridgeExample
{
public static void main(final String[] args) throws Exception
{
if (args.length != 2)
{
throw new IllegalArgumentException("JMSBridgeExample needs 2 arguments: ");
}
String sourceServer = args[0];
String targetServer = args[1];
System.out.println("client will publish messages to " + sourceServer +
" and receives message from " +
targetServer);
// Step 1. Create JNDI contexts for source and target servers
InitialContext sourceContext = JMSBridgeExample.createContext(sourceServer);
InitialContext targetContext = JMSBridgeExample.createContext(targetServer);
Hashtable sourceJndiParams = createJndiParams(sourceServer);
Hashtable targetJndiParams = createJndiParams(targetServer);
// Step 2. Create and start a JMS Bridge
// Note, the Bridge needs a transaction manager, in this instance we will use the JBoss TM
JMSBridge jmsBridge = new JMSBridgeImpl(
new JNDIConnectionFactoryFactory(sourceJndiParams, "ConnectionFactory"),
new JNDIConnectionFactoryFactory(targetJndiParams, "ConnectionFactory"),
new JNDIDestinationFactory(sourceJndiParams, "source/topic"),
new JNDIDestinationFactory(targetJndiParams, "target/queue"),
null,
null,
null,
null,
null,
5000,
10,
QualityOfServiceMode.DUPLICATES_OK,
1,
-1,
null,
null,
true);
Connection sourceConnection = null;
Connection targetConnection = null;
try
{
jmsBridge.start();
// Step 3. Lookup the *source* JMS resources
ConnectionFactory sourceConnectionFactory = (ConnectionFactory)sourceContext.lookup("ConnectionFactory");
Topic sourceTopic = (Topic)sourceContext.lookup("source/topic");
// Step 4. Create a connection, a session and a message producer for the *source* topic
sourceConnection = sourceConnectionFactory.createConnection();
Session sourceSession = sourceConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageProducer sourceProducer = sourceSession.createProducer(sourceTopic);
// Step 5. Create and send a text message to the *source* queue
TextMessage message = sourceSession.createTextMessage("this is a text message sent at " + System.currentTimeMillis());
sourceProducer.send(message);
System.out.format("Sent message to %s: %s%n",
((Topic)message.getJMSDestination()).getTopicName(),
message.getText());
System.out.format("Message ID : %s%n", message.getJMSMessageID());
// Step 6. Close the *source* connection
sourceConnection.close();
// Step 7. Lookup the *target* JMS resources
ConnectionFactory targetConnectionFactory = (ConnectionFactory)targetContext.lookup("ConnectionFactory");
Queue targetQueue = (Queue)targetContext.lookup("target/queue");
// Step 8. Create a connection, a session and a message consumer for the *target* queue
targetConnection = targetConnectionFactory.createConnection();
Session targetSession = targetConnection.createSession(false, Session.AUTO_ACKNOWLEDGE);
MessageConsumer targetConsumer = targetSession.createConsumer(targetQueue);
// Step 9. Start the connection to receive messages from the *target* queue
targetConnection.start();
// Step 10. Receive a message from the *target* queue
TextMessage messageReceived = (TextMessage)targetConsumer.receive(5000);
System.out.format("%nReceived from %s: %s%n",
((Queue)messageReceived.getJMSDestination()).getQueueName(),
messageReceived.getText());
// Step 11. Display the received message's ID and this "bridged" message ID
System.out.format("Message ID : %s%n", messageReceived.getJMSMessageID());
System.out.format("Bridged Message ID : %s%n", messageReceived.getStringProperty("AMQ_BRIDGE_MSG_ID_LIST"));
}
finally
{
// Step 12. Be sure to close the resources!
if(jmsBridge != null)
{
jmsBridge.stop();
}
if (sourceContext != null)
{
sourceContext.close();
}
if (targetContext != null)
{
targetContext.close();
}
if (sourceConnection != null)
{
sourceConnection.close();
}
if (targetConnection != null)
{
targetConnection.close();
}
}
}
private static InitialContext createContext(final String server) throws Exception
{
Hashtable jndiProps = createJndiParams(server);
return new InitialContext(jndiProps);
}
private static Hashtable createJndiParams(String server)
{
Hashtable jndiProps = new Hashtable();
jndiProps.put("connectionFactory.ConnectionFactory", server);
jndiProps.put("java.naming.factory.initial", "org.apache.activemq.artemis.jndi.ActiveMQInitialContextFactory");
jndiProps.put("queue.target/queue", "target");
jndiProps.put("topic.source/topic", "topic");
return jndiProps;
}
}