@Override public Connection createConnection() throws JMSException { return createConnection(user, password); }
@SuppressWarnings ( "all" ) // suppressing autocloseable error. inconsistent w/ other connectionfactory impls. @Override public JMSContext getContext( JmsDelegate delegate ) { String finalUrl = buildUrl( delegate ); ConnectionFactory factory = new ActiveMQConnectionFactory( finalUrl ); return factory.createContext( delegate.amqUsername, delegate.amqPassword ); }
@Override public JMSContext createContext(final int sessionMode) { return createContext(user, password, sessionMode); }
/** * For compatibility and users used to this kind of constructor */ public ActiveMQConnectionFactory(String url, String user, String password) { this(url); setUser(user).setPassword(password); }
private void setBrokerURL(String brokerURL) { ConnectionFactoryParser cfParser = new ConnectionFactoryParser(); try { URI uri = cfParser.expandURI(brokerURL); serverLocator = ServerLocatorImpl.newLocator(uri); cfParser.populateObject(uri, this); } catch (Exception e) { throw new RuntimeException(e.getMessage(), e); } if (getUser() == null) { setUser(DefaultConnectionProperties.DEFAULT_USER); } if (getPassword() == null) { setPassword(DefaultConnectionProperties.DEFAULT_PASSWORD); } }
@Test public void testMixedOpenWireExample() throws Exception { Connection openConn = null; SimpleString durableQueue = new SimpleString("exampleQueue"); this.server.createQueue(durableQueue, RoutingType.ANYCAST, durableQueue, null, true, false, -1, false, true); ActiveMQConnectionFactory openCF = new ActiveMQConnectionFactory(); Queue queue = new ActiveMQQueue("exampleQueue"); openConn = openCF.createConnection(); openConn.start(); Session openSession = openConn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = openSession.createProducer(queue); TextMessage message = openSession.createTextMessage("This is a text message"); producer.send(message); org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory artemisCF = new org.apache.activemq.artemis.jms.client.ActiveMQConnectionFactory(); Connection artemisConn = artemisCF.createConnection(); Session artemisSession = artemisConn.createSession(false, Session.AUTO_ACKNOWLEDGE); artemisConn.start(); MessageConsumer messageConsumer = artemisSession.createConsumer(artemisSession.createQueue("exampleQueue")); TextMessage messageReceived = (TextMessage) messageConsumer.receive(5000); assertEquals("This is a text message", messageReceived.getText()); openConn.close(); artemisConn.close(); }
@Test public void testLastValueQueueUsingAddressQueueParameters() throws Exception { ActiveMQConnectionFactory fact = (ActiveMQConnectionFactory) getCF(); //Set the consumer window size to 0 to not buffer any messages client side. fact.setConsumerWindowSize(0); Connection connection = fact.createConnection(); try { Session session = connection.createSession(false, Session.CLIENT_ACKNOWLEDGE); Queue queue = session.createQueue("random?last-value=true"); assertEquals("random", queue.getQueueName()); ActiveMQDestination a = (ActiveMQDestination) queue; assertTrue(a.getQueueAttributes().getLastValue()); MessageProducer producer = session.createProducer(queue); MessageConsumer consumer1 = session.createConsumer(queue); connection.start(); for (int j = 0; j < 100; j++) { TextMessage message = session.createTextMessage(); message.setText("Message" + j); message.setStringProperty(Message.HDR_LAST_VALUE_NAME.toString(), "key"); producer.send(message); } //Last message only should go to the consumer TextMessage tm = (TextMessage) consumer1.receive(10000); assertNotNull(tm); assertEquals("Message99", tm.getText()); } finally { connection.close(); } }
ActiveMQConnectionFactory cf = new ActiveMQConnectionFactory("tcp://localhost:5672"); Connection connection = cf.createConnection(); Session session = connection.createSession(true, Session.SESSION_TRANSACTED); MessageProducer producer = session.createProducer(session.createQueue("purgeQueue")); javax.jms.Queue jmsQueue = session.createQueue(queue); MessageConsumer consumer = session.createConsumer(jmsQueue); Message message = session.createTextMessage("hello " + i); producer.send(message); session.commit(); connection.start(); TextMessage txt = (TextMessage)consumer.receive(1000); assertNotNull(txt); assertEquals("hello " + i, txt.getText()); consumer.close(); session.rollback(); connection.close(); server.stop(); server.start();
ActiveMQServer server = createServer(true, true); ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory(); server.start(); Queue queue = server.createQueue(ADDRESS, RoutingType.ANYCAST, ADDRESS, user, null, true, false); Connection conn = factory.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer prod = session.createProducer(session.createQueue(ADDRESS.toString())); prod.send(session.createTextMessage("message " + i)); server.updateQueue(ADDRESS.toString(), RoutingType.ANYCAST, 1, false, false, null); conn.close(); factory.close(); server.stop(); factory = new ActiveMQConnectionFactory(); conn = factory.createConnection(); session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageConsumer consumer = session.createConsumer(session.createQueue(ADDRESS.toString()));
private void testReconnectSameNodeServerRestartedWithNonDurableSubOrTempQueue(final boolean nonDurableSub) throws Exception { ActiveMQConnectionFactory jbcf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, new TransportConfiguration(INVM_CONNECTOR_FACTORY)); jbcf.setReconnectAttempts(-1); Connection conn = jbcf.createConnection(); conn.setExceptionListener(listener); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); dest = sess.createTemporaryQueue(); MessageProducer producer = sess.createProducer(dest); MessageConsumer consumer = sess.createConsumer(dest); this.server.stop(); this.server.start(); producer.send(bm); conn.start(); BytesMessage bm = (BytesMessage) consumer.receive(1000); TextMessage tm = (TextMessage) consumer.receiveNoWait();
((ActiveMQJAASSecurityManager) liveService.getSecurityManager()).getConfiguration().addUser("myUser", "myPassword"); ((ActiveMQJAASSecurityManager) liveService.getSecurityManager()).getConfiguration().addRole("myUser", "consumeCreateRole"); Role consumeCreateRole = new Role("consumeCreateRole", false, true, true, true, true, true, true, true, true, true); Set<Role> consumerCreateRoles = new HashSet<>(); consumerCreateRoles.add(consumeCreateRole); liveService.getSecurityRepository().addMatch("test.queue", consumerCreateRoles); Assert.assertEquals("ensure user is set", "myUser", connectionFactory.getUser()); Assert.assertEquals("ensure password is set", "myPassword", connectionFactory.getPassword()); Connection connection = connectionFactory.createConnection(); connection.start(); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); javax.jms.Queue queue = session.createQueue("test.queue"); MessageProducer producer = session.createProducer(queue); producer.send(session.createTextMessage("test Msg")); Assert.fail("Sending message should throw a JMSSecurityException"); } catch (JMSSecurityException e) { MessageConsumer consumer = session.createConsumer(queue); } finally { connection.close();
@Test public void testSimpleRemoteConnections() throws Exception { for (int i = 0; i < 1000; i++) { TransportConfiguration config = new TransportConfiguration(NETTY_CONNECTOR_FACTORY); ActiveMQConnectionFactory cf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, config); cf.setInitialConnectAttempts(10); cf.setRetryInterval(100); Connection conn = cf.createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue queue = session.createQueue("SomeQueue"); MessageProducer producer = session.createProducer(queue); TextMessage msg = session.createTextMessage(); msg.setText("Message " + i); producer.send(msg); producer.close(); session.close(); conn.close(); cf.close(); } }
@Test //(timeout = 30000) // QueueAutoCreationTest was created to validate auto-creation of queues // and this test was added to validate a regression: https://issues.apache.org/jira/browse/ARTEMIS-2238 public void testAutoCreateOnTopic() throws Exception { ConnectionFactory factory = new ActiveMQConnectionFactory(); Connection connection = factory.createConnection(); SimpleString addressName = UUIDGenerator.getInstance().generateSimpleStringUUID(); System.out.println("Address is " + addressName); clientSession.createAddress(addressName, RoutingType.ANYCAST, false); Topic topic = new ActiveMQTopic(addressName.toString()); Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(topic); for (int i = 0; i < 10; i++) { producer.send(session.createTextMessage("hello")); } Assert.assertTrue(((ActiveMQConnection)connection).containsKnownDestination(addressName)); }
@Test public void testStackOverflowJMS() throws Exception { final String QUEUE_NAME = "queues.queue0"; setupCluster(); startServers(); ConnectionFactory cf1 = new ActiveMQConnectionFactory("vm://0"); Connection c1 = cf1.createConnection(); c1.start(); Session s1 = c1.createSession(); MessageConsumer mc1 = s1.createConsumer(s1.createQueue(QUEUE_NAME)); waitForBindings(0, QUEUE_NAME, 1, 1, true); waitForBindings(1, QUEUE_NAME, 1, 1, false); ConnectionFactory cf2 = new ActiveMQConnectionFactory("vm://1"); Connection c2 = cf2.createConnection(); Session s2 = c2.createSession(); MessageProducer mp2 = s2.createProducer(s2.createQueue(QUEUE_NAME)); mp2.send(s2.createMessage()); waitForBindings(1, QUEUE_NAME, 1, 0, true); assertTrue(Wait.waitFor(() -> servers[1].locateQueue(SimpleString.toSimpleString(QUEUE_NAME)).getMessageCount() == 1, 2000, 100)); c1.close(); c2.close(); }
public void runSimple() throws Exception { deleteDirectory(new File("./target/server")); ActiveMQServer server = createServer("./target/server"); try { server.start(); ConnectionFactory factory = new ActiveMQConnectionFactory(); Connection connection = factory.createConnection(); Session session = connection.createSession(); MessageProducer producer = session.createProducer(session.createQueue("queue")); for (int i = 0; i < 500; i++) { producer.send(session.createTextMessage("text")); } System.out.println("Sent messages"); } finally { server.stop(); } }
private void internalNoReconnect(String uriToUse, String destinationName) throws Exception { startClient(uriToUse, destinationName, true, false); ConnectionFactory cf = createCF(uriToUse); Connection connection = cf.createConnection(); connection.start(); try { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Destination destination = session.createQueue(destinationName); MessageConsumer consumer = session.createConsumer(destination); for (int i = 0; i < NUMBER_OF_MESSAGES; i++) { // give more time to receive first message but do not wait so long for last as all message were most likely sent Assert.assertNotNull("consumer.receive(...) returned null for " + i + "th message. Number of expected messages" + " to be received is " + NUMBER_OF_MESSAGES, i == NUMBER_OF_MESSAGES - 1 ? consumer.receive(500) : consumer.receive(5000)); } } finally { connection.stop(); connection.close(); } if (cf instanceof ActiveMQConnectionFactory) { ((ActiveMQConnectionFactory) cf).close(); } }
private void sendObjectMessage(String qname, Serializable obj) throws Exception { ActiveMQConnectionFactory factory = new ActiveMQConnectionFactory("vm://0"); Connection connection = factory.createConnection(); try { Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE); Queue q = session.createQueue(qname); MessageProducer producer = session.createProducer(q); ObjectMessage objMessage = session.createObjectMessage(); objMessage.setObject(obj); producer.send(objMessage); } finally { connection.close(); } }
void start() { connectionFactory = new ActiveMQConnectionFactory(getVmURL()); try { connection = connectionFactory.createConnection(); session = connection.createSession(); producer = session.createProducer(null); connection.start(); } catch (JMSException jmsEx) { throw new EmbeddedJMSResourceException("InternalClient creation failure", jmsEx); } }
@Test public void testBrowse2() throws Exception { conn = getConnectionFactory().createConnection(); Session session = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); MessageProducer producer = session.createProducer(queue1); ActiveMQConnectionFactory cf1 = (ActiveMQConnectionFactory) getConnectionFactory(); ClientSession coreSession = cf1.getServerLocator().createSessionFactory().createSession(true, true); coreSession.start(); ClientConsumer browser = coreSession.createConsumer("Queue1", true); conn.start(); Message m = session.createMessage(); m.setIntProperty("cnt", 0); producer.send(m); Assert.assertNotNull(browser.receiveImmediate()); coreSession.close(); drainDestination(getConnectionFactory(), queue1); }
@Test public void testNoReconnectCloseAfterFailToReconnectWithTopicConsumer() throws Exception { ActiveMQConnectionFactory jbcf = ActiveMQJMSClient.createConnectionFactoryWithoutHA(JMSFactoryType.CF, new TransportConfiguration(INVM_CONNECTOR_FACTORY)); jbcf.setReconnectAttempts(0); Connection conn = jbcf.createConnection(); Session sess = conn.createSession(false, Session.AUTO_ACKNOWLEDGE); ClientSession coreSession = ((ActiveMQSession) sess).getCoreSession(); coreSession.createQueue("mytopic", "blahblah", null, false); Topic topic = ActiveMQJMSClient.createTopic("mytopic"); //Create a non durable subscriber sess.createConsumer(topic); Thread.sleep(2000); this.server.stop(); this.server.start(); sess.close(); conn.close(); }