@Override public void storeMessage(Message message) throws Exception { manager.storeMessage(message); }
storageManager.storeMessageTransactional(tx.getID(), message); } else { storageManager.storeMessage(message);
@Test public void testDeleteMessagesOnStartup() throws Exception { createStorage(); Queue theQueue = new FakeQueue(new SimpleString("")); HashMap<Long, Queue> queues = new HashMap<>(); queues.put(100L, theQueue); Message msg = new CoreMessage(1, 100); journal.storeMessage(msg); for (int i = 2; i < 100; i++) { journal.storeMessage(new CoreMessage(i, 100)); } journal.storeReference(100, 1, true); journal.stop(); journal.start(); journal.loadBindingJournal(new ArrayList<QueueBindingInfo>(), new ArrayList<GroupingInfo>(), new ArrayList<AddressBindingInfo>()); FakePostOffice postOffice = new FakePostOffice(); journal.loadMessageJournal(postOffice, null, null, null, null, null, null, new PostOfficeJournalLoader(postOffice, null, journal, null, null, null, null, null, queues)); Assert.assertEquals(98, deletedMessage.size()); for (Long messageID : deletedMessage) { Assert.assertTrue("messageID = " + messageID, messageID.longValue() >= 2 && messageID <= 99); } }
@Test public void testStoreAMQP() throws Throwable { ActiveMQServer server = createServer(true); server.start(); ProtonProtocolManagerFactory factory = (ProtonProtocolManagerFactory) server.getRemotingService().getProtocolFactoryMap().get("AMQP"); MessageImpl protonJMessage = (MessageImpl) Message.Factory.create(); AMQPMessage message = encodeAndCreateAMQPMessage(protonJMessage); message.setMessageID(333); Assert.assertNotNull(factory); server.getStorageManager().storeMessage(message); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); TransactionFailureCallback transactionFailure = new TransactionFailureCallback() { @Override public void failedTransaction(long transactionID, List<RecordInfo> records, List<RecordInfo> recordsToDelete) { } }; try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); Assert.assertEquals(1, committedRecords.size()); } finally { journalStorageManager.getMessageJournal().stop(); } }
@Test public void testStoreCore() throws Throwable { ActiveMQServer server = createServer(true); server.start(); CoreMessage message = new CoreMessage().initBuffer(10 * 1024).setDurable(true); message.setMessageID(333); CoreProtocolManagerFactory factory = (CoreProtocolManagerFactory) server.getRemotingService().getProtocolFactoryMap().get("CORE"); Assert.assertNotNull(factory); message.getBodyBuffer().writeByte((byte)'Z'); server.getStorageManager().storeMessage(message); server.getStorageManager().stop(); JournalStorageManager journalStorageManager = (JournalStorageManager) server.getStorageManager(); List<RecordInfo> committedRecords = new LinkedList<>(); List<PreparedTransactionInfo> preparedTransactions = new LinkedList<>(); TransactionFailureCallback transactionFailure = new TransactionFailureCallback() { @Override public void failedTransaction(long transactionID, List<RecordInfo> records, List<RecordInfo> recordsToDelete) { } }; try { journalStorageManager.getMessageJournal().start(); journalStorageManager.getMessageJournal().load(committedRecords, preparedTransactions, transactionFailure); Assert.assertEquals(1, committedRecords.size()); } finally { journalStorageManager.getMessageJournal().stop(); } }