当前位置: 首页>>代码示例>>Java>>正文


Java ClientMessage.setBodyInputStream方法代码示例

本文整理汇总了Java中org.apache.activemq.artemis.api.core.client.ClientMessage.setBodyInputStream方法的典型用法代码示例。如果您正苦于以下问题:Java ClientMessage.setBodyInputStream方法的具体用法?Java ClientMessage.setBodyInputStream怎么用?Java ClientMessage.setBodyInputStream使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在org.apache.activemq.artemis.api.core.client.ClientMessage的用法示例。


在下文中一共展示了ClientMessage.setBodyInputStream方法的13个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testLargeMessage

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testLargeMessage() throws Exception {
   ClientProducer producer = clientSessionTxReceives.createProducer(address);
   ClientConsumer consumer = clientSessionTxReceives.createConsumer(qName1);
   SimpleString rh = new SimpleString("SMID1");

   for (int i = 0; i < 50; i++) {
      ClientMessage message = clientSession.createMessage(true);
      message.setBodyInputStream(createFakeLargeStream(300 * 1024));
      message.putStringProperty(Message.HDR_LAST_VALUE_NAME, rh);
      producer.send(message);
      clientSession.commit();
   }
   clientSessionTxReceives.start();
   ClientMessage m = consumer.receive(1000);
   Assert.assertNotNull(m);
   m.acknowledge();
   Assert.assertNull(consumer.receiveImmediate());
   clientSessionTxReceives.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:21,代码来源:LVQTest.java

示例2: testSendServerMessageWithValidatedUser

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testSendServerMessageWithValidatedUser() throws Exception {
   ActiveMQJAASSecurityManager securityManager = new ActiveMQJAASSecurityManager("PropertiesLogin");
   ActiveMQServer server = addServer(ActiveMQServers.newActiveMQServer(createDefaultInVMConfig().setSecurityEnabled(true), ManagementFactory.getPlatformMBeanServer(), securityManager, false));
   server.getConfiguration().setPopulateValidatedUser(true);

   Role role = new Role("programmers", true, true, true, true, true, true, true, true, true, true);
   Set<Role> roles = new HashSet<>();
   roles.add(role);
   server.getSecurityRepository().addMatch("#", roles);

   server.start();
   ServerLocator locator = createInVMNonHALocator();
   ClientSessionFactory sf = createSessionFactory(locator);

   try {
      ClientSession session = sf.createSession("first", "secret", false, true, true, false, 0);
      ClientMessage clientMessage = session.createMessage(false);
      clientMessage.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(ActiveMQClient.DEFAULT_MIN_LARGE_MESSAGE_SIZE));

      session.createQueue("A", RoutingType.ANYCAST, "A");

      ClientProducer prod = session.createProducer("A");
      prod.send(clientMessage);
      session.commit();
      session.start();

      ClientConsumer cons = session.createConsumer("A");
      ClientMessage msg = cons.receive(5000);

      assertEquals("first", msg.getValidatedUserID());
   } finally {
      sf.close();
      locator.close();
      server.stop();
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:38,代码来源:ServerLargeMessageTest.java

示例3: sendMessages

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
/**
 * @param numberOfMessages
 * @param numberOfBytes
 * @param delayDelivery
 * @param session
 * @param producer
 * @throws Exception
 * @throws IOException
 * @throws ActiveMQException
 */
private void sendMessages(final int numberOfMessages,
                          final long numberOfBytes,
                          final long delayDelivery,
                          final ClientSession session,
                          final ClientProducer producer) throws Exception {
   LargeMessageTestBase.log.debug("NumberOfBytes = " + numberOfBytes);
   for (int i = 0; i < numberOfMessages; i++) {
      ClientMessage message = session.createMessage(true);

      // If the test is using more than 1M, we will only use the Streaming, as it require too much memory from the
      // test
      if (numberOfBytes > 1024 * 1024 || i % 2 == 0) {
         LargeMessageTestBase.log.debug("Sending message (stream)" + i);
         message.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(numberOfBytes));
      } else {
         LargeMessageTestBase.log.debug("Sending message (array)" + i);
         byte[] bytes = new byte[(int) numberOfBytes];
         for (int j = 0; j < bytes.length; j++) {
            bytes[j] = ActiveMQTestBase.getSamplebyte(j);
         }
         message.getBodyBuffer().writeBytes(bytes);
      }
      message.putIntProperty(new SimpleString("counter-message"), i);
      if (delayDelivery > 0) {
         long time = System.currentTimeMillis();
         message.putLongProperty(new SimpleString("original-time"), time);
         message.putLongProperty(Message.HDR_SCHEDULED_DELIVERY_TIME, time + delayDelivery);

         producer.send(message);
      } else {
         producer.send(message);
      }
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:45,代码来源:LargeMessageTestBase.java

示例4: testLargeMessageFileLeak

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testLargeMessageFileLeak() throws Exception {
   OperatingSystemMXBean os = ManagementFactory.getOperatingSystemMXBean();

   // only run this on *nix systems which will have the com.sun.management.UnixOperatingSystemMXBean (needed to check open file count)
   Assume.assumeTrue(os instanceof UnixOperatingSystemMXBean);

   long fdBaseline = ((UnixOperatingSystemMXBean) os).getOpenFileDescriptorCount();
   final int SIZE = 2 * 1024;
   SimpleString dla = new SimpleString("DLA");
   SimpleString qName = new SimpleString("q1");
   SimpleString adName = new SimpleString("ad1");

   AddressSettings addressSettings = new AddressSettings().setMaxDeliveryAttempts(1).setDeadLetterAddress(dla);
   server.getAddressSettingsRepository().addMatch(adName.toString(), addressSettings);
   SimpleString dlq = new SimpleString("DLQ1");
   clientSession.createQueue(dla, dlq, null, false);
   clientSession.createQueue(adName, qName, null, false);
   for (int i = 0; i < 10; i++) {
      ClientProducer producer = clientSession.createProducer(adName);
      ClientMessage clientFile = clientSession.createMessage(true);
      clientFile.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(SIZE));
      producer.send(clientFile);
      clientSession.start();
      ClientConsumer clientConsumer = clientSession.createConsumer(qName);
      ClientMessage m = clientConsumer.receive(500);
      m.acknowledge();
      Assert.assertNotNull(m);

      // force a cancel
      clientSession.rollback();
      m = clientConsumer.receiveImmediate();
      Assert.assertNull(m);
      clientConsumer.close();
   }
   assertTrue("File descriptors are leaking", ((UnixOperatingSystemMXBean) os).getOpenFileDescriptorCount() - fdBaseline <= 0);
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:38,代码来源:DeadLetterAddressTest.java

示例5: sendInRange

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
protected void sendInRange(final int node,
                           final String address,
                           final int msgStart,
                           final int msgEnd,
                           final boolean durable,
                           final SimpleString key,
                           final SimpleString val) throws Exception {
   ClientSessionFactory sf = sfs[node];

   if (sf == null) {
      throw new IllegalArgumentException("No sf at " + node);
   }

   ClientSession session = sf.createSession(false, true, true);

   try {
      ClientProducer producer = session.createProducer(address);

      for (int i = msgStart; i < msgEnd; i++) {
         ClientMessage message = session.createMessage(durable);

         if (isLargeMessage()) {
            message.setBodyInputStream(createFakeLargeStream(getLargeMessageSize()));
         }

         message.putStringProperty(key, val);
         message.putIntProperty(ClusterTestBase.COUNT_PROP, i);

         producer.send(message);
      }
   } finally {
      session.close();
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:35,代码来源:ClusterTestBase.java

示例6: setLargeMessageBody

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
/**
 * Large message version of {@link #setBody(int, ClientMessage)}.
 *
 * @param i
 * @param message
 */
protected static void setLargeMessageBody(final int i, final ClientMessage message) {
   try {
      message.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(LARGE_MESSAGE_SIZE));
   } catch (Exception e) {
      throw new RuntimeException(e);
   }
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:14,代码来源:FailoverTestBase.java

示例7: testHugeStreamingSpacesCompressed

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testHugeStreamingSpacesCompressed() throws Exception {
   final long messageSize = 1024L * 1024L;

   System.out.println("Message size = " + messageSize);

   ActiveMQServer server = createServer(true, isNetty());

   server.start();

   // big enough to hold the whole message compressed on a single message (about 1M on our tests)
   locator.setMinLargeMessageSize(100 * 1024 * 1024);

   ClientSessionFactory sf = createSessionFactory(locator);

   ClientSession session = addClientSession(sf.createSession(false, false, false));

   session.createQueue(ADDRESS, ADDRESS, null, true);

   ClientProducer producer = session.createProducer(ADDRESS);

   ClientMessage clientMessage = session.createMessage(true);

   clientMessage.setBodyInputStream(new InputStream() {
      private long count;

      private boolean closed = false;

      @Override
      public void close() throws IOException {
         super.close();
         closed = true;
      }

      @Override
      public int read() throws IOException {
         if (closed) {
            throw new IOException("Stream was closed");
         }

         if (count++ < messageSize) {
            return ' ';
         } else {
            return -1;
         }
      }
   });

   producer.send(clientMessage);

   session.commit();

   // this is to make sure the message was sent as a regular message (not taking a file on server)
   validateNoFilesOnLargeDir();

   session.start();

   ClientConsumer consumer = session.createConsumer(ADDRESS);
   ClientMessage msg1 = consumer.receive(1000);
   Assert.assertNotNull(msg1);

   final AtomicLong numberOfSpaces = new AtomicLong();

   msg1.saveToOutputStream(new OutputStream() {
      @Override
      public void write(int content) {
         if (content == ' ') {
            numberOfSpaces.incrementAndGet();
         }
      }
   });

   assertEquals(messageSize, numberOfSpaces.get());

   msg1.acknowledge();

   session.commit();

   session.close();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:81,代码来源:LargeMessageCompressTest.java

示例8: testSendRegularAfterCompression

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testSendRegularAfterCompression() throws Exception {
   ActiveMQServer server = createServer(true, isNetty());
   server.start();

   ClientSessionFactory sf = createSessionFactory(locator);

   ClientSession session = addClientSession(sf.createSession(false, true, true));

   session.createTemporaryQueue(ADDRESS, ADDRESS);

   ClientProducer producer = session.createProducer(ADDRESS);

   int minLargeSize = locator.getMinLargeMessageSize();

   TestLargeMessageInputStream input = new TestLargeMessageInputStream(minLargeSize);
   adjustLargeCompression(true, input, 1024);

   int num = 1;
   for (int i = 0; i < num; i++) {
      ClientMessage clientFile = session.createMessage(true);
      clientFile.setBodyInputStream(input.clone());

      producer.send(clientFile);
   }

   session.start();

   //no file should be in the dir as we send it as regular
   validateNoFilesOnLargeDir();

   ClientConsumer consumer = session.createConsumer(ADDRESS);
   for (int j = 0; j < num; j++) {
      ClientMessage msg1 = consumer.receive(1000);
      Assert.assertNotNull(msg1);

      for (int i = 0; i < input.getSize(); i++) {
         byte b = msg1.getBodyBuffer().readByte();
         Assert.assertEquals("incorrect char ", input.getChar(i), b);
      }
      msg1.acknowledge();
   }

   session.commit();
   consumer.close();

   session.close();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:49,代码来源:LargeMessageAvoidLargeMessagesTest.java

示例9: testSendLargeAfterUnableToSendRegular

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testSendLargeAfterUnableToSendRegular() throws Exception {
   ActiveMQServer server = createServer(true, isNetty());
   server.start();

   //reduce the minLargeMessageSize to make the test faster
   locator.setMinLargeMessageSize(5 * 1024);
   ClientSessionFactory sf = createSessionFactory(locator);

   ClientSession session = addClientSession(sf.createSession(false, false, false));

   session.createTemporaryQueue(ADDRESS, ADDRESS);

   ClientProducer producer = session.createProducer(ADDRESS);

   int minLargeSize = locator.getMinLargeMessageSize();
   TestLargeMessageInputStream input = new TestLargeMessageInputStream(minLargeSize);
   input.setSize(80 * minLargeSize);
   adjustLargeCompression(false, input, 40 * minLargeSize);

   int num = 10;
   for (int i = 0; i < num; i++) {
      ClientMessage clientFile = session.createMessage(true);
      clientFile.setBodyInputStream(input.clone());

      producer.send(clientFile);
   }

   session.commit();

   session.start();

   //no file should be in the dir as we send it as regular
   validateNoFilesOnLargeDir(server.getConfiguration().getLargeMessagesDirectory(), num);

   ClientConsumer consumer = session.createConsumer(ADDRESS);
   for (int j = 0; j < num; j++) {
      ClientMessage msg1 = consumer.receive(1000);
      Assert.assertNotNull(msg1);

      for (int i = 0; i < input.getSize(); i++) {
         byte b = msg1.getBodyBuffer().readByte();
         Assert.assertEquals("incorrect char", input.getChar(i), b);
      }
      msg1.acknowledge();
   }

   session.commit();
   consumer.close();

   session.close();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:53,代码来源:LargeMessageAvoidLargeMessagesTest.java

示例10: createLargeMessage

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
private ClientMessage createLargeMessage(ClientSession session, long largeMessageSize) throws Exception {
   File fileInput = new File(getTemporaryDir(), "huge_message_to_send.dat");

   createFile(fileInput, largeMessageSize);

   System.out.println("File created at: " + fileInput.getAbsolutePath());

   ClientMessage message = session.createMessage(Message.BYTES_TYPE, true);

   FileInputStream fileInputStream = new FileInputStream(fileInput);
   BufferedInputStream bufferedInput = new BufferedInputStream(fileInputStream);

   message.setBodyInputStream(bufferedInput);

   return message;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:17,代码来源:BridgeTest.java

示例11: testBackupStartsWhenLiveIsReceivingLargeMessage

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
/**
 * LargeMessages are passed from the client to the server in chunks. Here we test the backup
 * starting the data synchronization with the live in the middle of a multiple chunks large
 * message upload from the client to the live server.
 *
 * @throws Exception
 */
@Test
public void testBackupStartsWhenLiveIsReceivingLargeMessage() throws Exception {
   final ClientSession session = addClientSession(sessionFactory.createSession(true, true));
   session.createQueue(FailoverTestBase.ADDRESS, FailoverTestBase.ADDRESS, null, true);
   final ClientProducer producer = session.createProducer(FailoverTestBase.ADDRESS);
   final ClientMessage message = session.createMessage(true);
   final int largeMessageSize = 1000 * MIN_LARGE_MESSAGE;
   message.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(largeMessageSize));

   final AtomicBoolean caughtException = new AtomicBoolean(false);
   final CountDownLatch latch = new CountDownLatch(1);
   final CountDownLatch latch2 = new CountDownLatch(1);

   Runnable r = new Runnable() {
      @Override
      public void run() {
         try {
            latch.countDown();
            producer.send(message);
            sendMessages(session, producer, 20);
            session.commit();
         } catch (ActiveMQException e) {
            e.printStackTrace();
            caughtException.set(true);
         } finally {
            latch2.countDown();
         }
      }
   };
   Executors.defaultThreadFactory().newThread(r).start();
   waitForLatch(latch);
   startBackupFinishSyncing();
   ActiveMQTestBase.waitForLatch(latch2);
   crash(session);
   assertFalse("no exceptions while sending message", caughtException.get());

   session.start();
   ClientConsumer consumer = session.createConsumer(FailoverTestBase.ADDRESS);
   ClientMessage msg = consumer.receive(2000);
   ActiveMQBuffer buffer = msg.getBodyBuffer();

   for (int j = 0; j < largeMessageSize; j++) {
      Assert.assertTrue("large msg , expecting " + largeMessageSize + " bytes, got " + j, buffer.readable());
      Assert.assertEquals("equal at " + j, ActiveMQTestBase.getSamplebyte(j), buffer.readByte());
   }
   receiveMessages(consumer, 0, 20, true);
   assertNull("there should be no more messages!", consumer.receiveImmediate());
   consumer.close();
   session.commit();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:58,代码来源:BackupSyncLargeMessageTest.java

示例12: createLargeClientMessageStreaming

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
protected ClientMessage createLargeClientMessageStreaming(final ClientSession session,
                                                          final long numberOfBytes,
                                                          final boolean persistent) throws Exception {

   ClientMessage clientMessage = session.createMessage(persistent);

   clientMessage.setBodyInputStream(ActiveMQTestBase.createFakeLargeStream(numberOfBytes));

   return clientMessage;
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:11,代码来源:LargeMessageTestBase.java

示例13: testSimpleSendOnAvoid

import org.apache.activemq.artemis.api.core.client.ClientMessage; //导入方法依赖的package包/类
@Test
public void testSimpleSendOnAvoid() throws Exception {
   ActiveMQServer server = createServer(true, isNetty());
   server.start();

   ClientSessionFactory sf = createSessionFactory(locator);

   ClientSession session = addClientSession(sf.createSession(false, true, true));

   session.createQueue(ADDRESS, ADDRESS, true);

   ClientProducer producer = session.createProducer(ADDRESS);

   int minLargeSize = locator.getMinLargeMessageSize();

   TestLargeMessageInputStream input = new TestLargeMessageInputStream(minLargeSize);

   ClientMessage clientFile = session.createMessage(true);
   clientFile.setBodyInputStream(input.clone());

   producer.send(clientFile);

   session.start();

   //no file should be in the dir as we send it as regular
   validateNoFilesOnLargeDir();

   ClientConsumer consumer = session.createConsumer(ADDRESS);

   ClientMessage msg1 = consumer.receive(1000);
   Assert.assertNotNull(msg1);

   for (int i = 0; i < input.getSize(); i++) {
      byte b = msg1.getBodyBuffer().readByte();
      Assert.assertEquals("incorrect char ", input.getChar(i), b);
   }
   msg1.acknowledge();
   consumer.close();

   session.close();
}
 
开发者ID:apache,项目名称:activemq-artemis,代码行数:42,代码来源:LargeMessageAvoidLargeMessagesTest.java


注:本文中的org.apache.activemq.artemis.api.core.client.ClientMessage.setBodyInputStream方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。