public static void registerProtocol(ProtocolManagerFactory manager) { Persister<Message>[] messagePersisters = manager.getPersister(); if (messagePersisters == null || messagePersisters.length == 0) { logger.debug("Cannot find persister for " + manager); } else { for (Persister p : messagePersisters) { registerPersister(p); } } }
public static Message extractEmbedded(ICoreMessage message) { if (message.getType() == Message.EMBEDDED_TYPE) { ActiveMQBuffer buffer = message.getReadOnlyBodyBuffer(); if (buffer.readableBytes() < signature.length || !checkSignature(buffer)) { logger.tracef("Message type %d was used for something other than embed messages, ignoring content and treating as a regular message", Message.EMBEDDED_TYPE); return message; } try { return MessagePersister.getInstance().decode(buffer, null); } catch (Exception e) { logger.warn(e.getMessage(), e); return message; } } else { return message; } }
/** Sub classes must add the first short as the protocol-id */ @Override public void encode(ActiveMQBuffer buffer, Message record) { buffer.writeByte(getID()); }
MessagePersister.getInstance().registerProtocol(coreProtocolManagerFactory);
/** Sub classes must add the first short as the protocol-id */ @Override public void encode(ActiveMQBuffer buffer, Message record) { super.encode(buffer, record); AMQPMessage msgEncode = (AMQPMessage)record; buffer.writeLong(record.getMessageID()); buffer.writeLong(msgEncode.getMessageFormat()); buffer.writeNullableSimpleString(record.getAddressSimpleString()); record.persist(buffer); }
@Override public Message decode(ActiveMQBuffer buffer, Message record) { byte protocol = buffer.readByte(); Persister<Message> persister = getPersister(protocol); if (persister == null) { throw new NullPointerException("couldn't find factory for type=" + protocol); } return persister.decode(buffer, record); } }
/** * Loads the protocols found into a map. * * @param protocolManagerFactoryCollection */ private void loadProtocolManagerFactories(Iterable<ProtocolManagerFactory> protocolManagerFactoryCollection) { for (ProtocolManagerFactory next : protocolManagerFactoryCollection) { MessagePersister.registerProtocol(next); String[] protocols = next.getProtocols(); for (String protocol : protocols) { ActiveMQServerLogger.LOGGER.addingProtocolSupport(protocol, next.getModuleName()); protocolMap.put(protocol, next); } } }
/** Sub classes must add the first short as the protocol-id */ @Override public void encode(ActiveMQBuffer buffer, Message record) { super.encode(buffer, record); AMQPMessage msgEncode = (AMQPMessage)record; buffer.writeLong(record.getMessageID()); buffer.writeLong(msgEncode.getMessageFormat()); buffer.writeNullableSimpleString(record.getAddressSimpleString()); record.persist(buffer); }
@Override public void decode(final ActiveMQBuffer buffer) { transactionID = buffer.readLong(); boolean isLargeMessage = buffer.readBoolean(); if (isLargeMessage) { int largeMessageHeaderSize = buffer.readInt(); if (storageManager == null) { largeMessageLazyData = new byte[largeMessageHeaderSize]; buffer.readBytes(largeMessageLazyData); } else { this.message = storageManager.createLargeMessage(); LargeMessagePersister.getInstance().decode(buffer, (LargeServerMessage) message); ((LargeServerMessage) message).incrementDelayDeletionCount(); } } else { this.message = MessagePersister.getInstance().decode(buffer, null); } int queueIDsSize = buffer.readInt(); queueIDs = new long[queueIDsSize]; for (int i = 0; i < queueIDsSize; i++) { queueIDs[i] = buffer.readLong(); } }
@Before public void registerProtocols() { MessagePersister.registerPersister(CoreMessagePersister.getInstance()); MessagePersister.registerPersister(AMQPMessagePersister.getInstance()); }
Message message = MessagePersister.getInstance().decode(buff, null);
Message message = MessagePersister.getInstance().decode(buff, null);
Message message = MessagePersister.getInstance().decode(buffer, null);