indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() {
indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() {
indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() {
indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() {
@Override public void addMessage(final ConnectionContext context, final Message message) throws IOException { final KahaAddMessageCommand command = new KahaAddMessageCommand(); command.setDestination(dest); command.setMessageId(message.getMessageId().toProducerKey()); command.setTransactionInfo(TransactionIdConversion.convert(transactionIdTransformer.transform(message.getTransactionId()))); command.setPriority(message.getPriority()); command.setPrioritySupported(isPrioritizedMessages()); org.apache.activemq.util.ByteSequence packet = wireFormat.marshal(message); command.setMessage(new Buffer(packet.getData(), packet.getOffset(), packet.getLength())); store(command, isEnableJournalDiskSyncs() && message.isResponseRequired(), new IndexAware() { // sync add? (for async, future present from getFutureOrSequenceLong) Object possibleFuture = message.getMessageId().getFutureOrSequenceLong(); @Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null); }
@Override public void addMessage(final ConnectionContext context, final Message message) throws IOException { final KahaAddMessageCommand command = new KahaAddMessageCommand(); command.setDestination(dest); command.setMessageId(message.getMessageId().toProducerKey()); command.setTransactionInfo(TransactionIdConversion.convert(transactionIdTransformer.transform(message.getTransactionId()))); command.setPriority(message.getPriority()); command.setPrioritySupported(isPrioritizedMessages()); org.apache.activemq.util.ByteSequence packet = wireFormat.marshal(message); command.setMessage(new Buffer(packet.getData(), packet.getOffset(), packet.getLength())); store(command, isEnableJournalDiskSyncs() && message.isResponseRequired(), new IndexAware() { // sync add? (for async, future present from getFutureOrSequenceLong) Object possibleFuture = message.getMessageId().getFutureOrSequenceLong(); @Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null); }
@Override public void addMessage(final ConnectionContext context, final Message message) throws IOException { final KahaAddMessageCommand command = new KahaAddMessageCommand(); command.setDestination(dest); command.setMessageId(message.getMessageId().toProducerKey()); command.setTransactionInfo(TransactionIdConversion.convert(transactionIdTransformer.transform(message.getTransactionId()))); command.setPriority(message.getPriority()); command.setPrioritySupported(isPrioritizedMessages()); org.apache.activemq.util.ByteSequence packet = wireFormat.marshal(message); command.setMessage(new Buffer(packet.getData(), packet.getOffset(), packet.getLength())); store(command, isEnableJournalDiskSyncs() && message.isResponseRequired(), new IndexAware() { // sync add? (for async, future present from getFutureOrSequenceLong) Object possibleFuture = message.getMessageId().getFutureOrSequenceLong(); @Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null); }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
@Override public void run(final ConnectionContext context) throws IOException { JDBCPersistenceAdapter jdbcPersistenceAdapter = (JDBCPersistenceAdapter) persistenceAdapter; final Long preparedEntrySequence = (Long) message.getMessageId().getEntryLocator(); TransactionContext c = jdbcPersistenceAdapter.getTransactionContext(context); synchronized (jdbcMessageStore.pendingAdditions) { message.getMessageId().setEntryLocator(jdbcPersistenceAdapter.getNextSequenceId()); c.onCompletion(new Runnable() { @Override public void run() { message.getMessageId().setFutureOrSequenceLong(message.getMessageId().getEntryLocator()); } }); if (jdbcMessageStore.getIndexListener() != null) { jdbcMessageStore.getIndexListener().onAdd(new IndexListener.MessageContext(context, message, null)); } } jdbcPersistenceAdapter.commitAdd(context, message.getMessageId(), preparedEntrySequence); jdbcMessageStore.onAdd(message, (Long)message.getMessageId().getEntryLocator(), message.getPriority()); }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
@Override public void run(final ConnectionContext context) throws IOException { JDBCPersistenceAdapter jdbcPersistenceAdapter = (JDBCPersistenceAdapter) persistenceAdapter; final Long preparedEntrySequence = (Long) message.getMessageId().getEntryLocator(); TransactionContext c = jdbcPersistenceAdapter.getTransactionContext(context); synchronized (jdbcMessageStore.pendingAdditions) { message.getMessageId().setEntryLocator(jdbcPersistenceAdapter.getNextSequenceId()); c.onCompletion(new Runnable() { @Override public void run() { message.getMessageId().setFutureOrSequenceLong(message.getMessageId().getEntryLocator()); } }); if (jdbcMessageStore.getIndexListener() != null) { jdbcMessageStore.getIndexListener().onAdd(new IndexListener.MessageContext(context, message, null)); } } jdbcPersistenceAdapter.commitAdd(context, message.getMessageId(), preparedEntrySequence); jdbcMessageStore.onAdd(message, (Long)message.getMessageId().getEntryLocator(), message.getPriority()); }
@Override public ListenableFuture<Object> asyncAddQueueMessage(final ConnectionContext context, final Message message) throws IOException { if (isConcurrentStoreAndDispatchQueues()) { message.beforeMarshall(wireFormat); StoreQueueTask result = new StoreQueueTask(this, context, message); ListenableFuture<Object> future = result.getFuture(); message.getMessageId().setFutureOrSequenceLong(future); message.setRecievedByDFBridge(true); // flag message as concurrentStoreAndDispatch result.aquireLocks(); synchronized (asyncTaskMap) { addQueueTask(this, result); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } return future; } else { return super.asyncAddQueueMessage(context, message); } }
@Override public void run(final ConnectionContext context) throws IOException { JDBCPersistenceAdapter jdbcPersistenceAdapter = (JDBCPersistenceAdapter) persistenceAdapter; final Long preparedEntrySequence = (Long) message.getMessageId().getEntryLocator(); TransactionContext c = jdbcPersistenceAdapter.getTransactionContext(context); synchronized (jdbcMessageStore.pendingAdditions) { message.getMessageId().setEntryLocator(jdbcPersistenceAdapter.getNextSequenceId()); c.onCompletion(new Runnable() { @Override public void run() { message.getMessageId().setFutureOrSequenceLong(message.getMessageId().getEntryLocator()); } }); if (jdbcMessageStore.getIndexListener() != null) { jdbcMessageStore.getIndexListener().onAdd(new IndexListener.MessageContext(context, message, null)); } } jdbcPersistenceAdapter.commitAdd(context, message.getMessageId(), preparedEntrySequence); jdbcMessageStore.onAdd(message, (Long)message.getMessageId().getEntryLocator(), message.getPriority()); }
@Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null);
@Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null);
@Override public void sequenceAssignedWithIndexLocked(final long sequence) { message.getMessageId().setFutureOrSequenceLong(sequence); if (indexListener != null) { if (possibleFuture == null) { trackPendingAdd(dest, sequence); indexListener.onAdd(new IndexListener.MessageContext(context, message, new Runnable() { @Override public void run() { trackPendingAddComplete(dest, sequence); } })); } } } }, null);
private boolean tryOrderedCursorAdd(Message message, ConnectionContext context) throws Exception { boolean result = true; if (context.isInTransaction()) { context.getTransaction().addSynchronization(new CursorAddSync(new MessageContext(context, message, null))); } else if (store != null && message.isPersistent()) { doPendingCursorAdditions(); } else { // no ordering issue with non persistent messages result = tryCursorAdd(message); messageSent(context, message); } return result; }
void addMessage(ConnectionContext context, final Message message, final RecordLocation location) { synchronized (this) { lastLocation = location; MessageId id = message.getMessageId(); messages.put(id, message); message.getMessageId().setFutureOrSequenceLong(0l); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } }
@Override public synchronized void addMessage(ConnectionContext context, Message message) throws IOException { synchronized (messageTable) { messageTable.put(message.getMessageId(), message); incMessageStoreStatistics(getMessageStoreStatistics(), message); message.incrementReferenceCount(); message.getMessageId().setFutureOrSequenceLong(sequenceId++); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } }
void addMessage(ConnectionContext context, final Message message, final RecordLocation location) { synchronized (this) { lastLocation = location; MessageId id = message.getMessageId(); messages.put(id, message); message.getMessageId().setFutureOrSequenceLong(0l); if (indexListener != null) { indexListener.onAdd(new IndexListener.MessageContext(context, message, null)); } } }