Package org.activemq.message

Examples of org.activemq.message.MessageAck


                // Checkpoint the removed messages.
                iterator = cpRemovedMessageLocations.iterator();
                while (iterator.hasNext()) {
                    try {
                        MessageAck ack = (MessageAck) iterator.next();
                        longTermStore.removeMessage(ack);
                        messagesRemoved[0]++;
                    } catch (Throwable e) {
                        log.debug("Message could not be removed from long term store: " + e.getMessage(), e);
                    }
View Full Code Here


                TxOperation op = (TxOperation) iter.next();
                if( op.operationType==TxOperation.REMOVE_OPERATION_TYPE ) {
                    list.add(op.data);
                }
            }
            MessageAck rc[] = new MessageAck[list.size()];
            list.toArray(rc);
            return rc;
        }
View Full Code Here

                                store.replayAddMessage(msg);
                                transactionCounter++;
                            }
                        }
                        else if (packet instanceof MessageAck) {
                            MessageAck ack = (MessageAck) packet;
                            JournalMessageStore store = (JournalMessageStore) createMessageStore(destination, ack.getDestination().isQueue());
                            if( ack.getTransactionId()!=null ) {
                                transactionStore.removeMessage(store, ack, pos);
                            } else {
                                store.replayRemoveMessage(ack);
                                transactionCounter++;
                            }
                        }
                        else {
                            log.error("Unknown type of packet in transaction log which will be discarded: " + packet);
                        }

                        break;
                    case TX_COMMAND_RECORD_TYPE:
                       
                        TxCommand command = new TxCommand();
                        command.setType(is.readByte());
                        command.setWasPrepared(is.readBoolean());
                        switch(command.getType()) {
                          case TxCommand.LOCAL_COMMIT:
                          case TxCommand.LOCAL_ROLLBACK:
                              command.setTransactionId(is.readUTF());
                              break;
                          default:
                              command.setTransactionId(ActiveMQXid.read(is));
                            break;
                        }
                       
                        // Try to replay the packet.
                        switch(command.getType()) {
                          case TxCommand.XA_PREPARE:
                              transactionStore.replayPrepare(command.getTransactionId());
                              break;
                          case TxCommand.XA_COMMIT:
                          case TxCommand.LOCAL_COMMIT:
                              Tx tx = transactionStore.replayCommit(command.getTransactionId(), command.getWasPrepared());
                              // Replay the committed operations.
                              if( tx!=null) {
                                  tx.getOperations();
                                  for (Iterator iter = tx.getOperations().iterator(); iter.hasNext();) {
                                      TxOperation op = (TxOperation) iter.next();
                                      if( op.operationType == TxOperation.ADD_OPERATION_TYPE ) {
                                          op.store.replayAddMessage((ActiveMQMessage) op.data);
                                      }
                                      if( op.operationType == TxOperation.REMOVE_OPERATION_TYPE) {
                                          op.store.replayRemoveMessage((MessageAck) op.data);
                                      }
                                      if( op.operationType == TxOperation.ACK_OPERATION_TYPE) {
                                          JournalAck ack = (JournalAck) op.data;
                                          ((JournalTopicMessageStore)op.store).replayAcknowledge(ack.getSubscription(), new MessageIdentity(ack.getMessageId()));
                                      }
                                  }
                                  transactionCounter++;
                              }
                              break;
View Full Code Here

                // Checkpoint the removed messages.
                iterator = cpRemovedMessageLocations.iterator();
                while (iterator.hasNext()) {
                    try {
                        MessageAck ack = (MessageAck) iterator.next();
                        if( debug )
                            log.debug("Removing: "+ack.getMessageID());
                        longTermStore.removeMessage(ack);
                        messagesRemoved[0]++;
                    } catch (Throwable e) {
                        log.debug("Message could not be removed from long term store: " + e.getMessage(), e);
                    }
View Full Code Here

                TxOperation op = (TxOperation) iter.next();
                if( op.operationType==TxOperation.REMOVE_OPERATION_TYPE ) {
                    list.add(op.data);
                }
            }
            MessageAck rc[] = new MessageAck[list.size()];
            list.toArray(rc);
            return rc;
        }
View Full Code Here

    /**
     * @return a new Packet instance
     */
    public Packet createPacket() {
        return new MessageAck();
    }
View Full Code Here

     * @param packet A Packet object
     * @param dataIn the data input stream to build the packet from
     * @throws IOException
     */
    public void buildPacket(Packet packet, DataInput dataIn) throws IOException {
        MessageAck ack = (MessageAck) packet;
        BitArray ba = ack.getBitArray();
        ba.readFromStream(dataIn);
        boolean cachingEnabled = ba.get(MessageAck.CACHED_VALUES_INDEX);
        ack.setMessageRead(ba.get(MessageAck.MESSAGE_READ_INDEX));
        ack.setPersistent(ba.get(MessageAck.PERSISTENT_INDEX));
        ack.setExpired(ba.get(MessageAck.EXPIRED_INDEX));
        if (ba.get(AbstractPacket.RECEIPT_REQUIRED_INDEX)) {
            ack.setReceiptRequired(true);
            ack.setId(dataIn.readShort());
        }
        if (ba.get(MessageAck.EXTERNAL_MESSAGE_ID_INDEX)) {
            ack.setExternalMessageId(true);
            ack.setMessageID(dataIn.readUTF());
        }
        else {
            if (cachingEnabled) {
                short key = dataIn.readShort();
                ack.setProducerKey((String) wireFormat.getValueFromReadCache(key));
            }
            else {
                ack.setProducerKey(dataIn.readUTF());
            }
            if (ba.get(MessageAck.LONG_SEQUENCE_INDEX)) {
                ack.setSequenceNumber(dataIn.readLong());
            }
            else {
                ack.setSequenceNumber(dataIn.readInt());
            }
        }
        if (ba.get(AbstractPacket.BROKERS_VISITED_INDEX)) {
            int visitedLen = dataIn.readShort();
            for (int i = 0;i < visitedLen;i++) {
                ack.addBrokerVisited(dataIn.readUTF());
            }
        }
        if (ba.get(MessageAck.TRANSACTION_ID_INDEX)) {
            if (cachingEnabled) {
                short key = dataIn.readShort();
                ack.setTransactionId(wireFormat.getValueFromReadCache(key));
            } else {
                if (ba.get(MessageAck.XA_TRANS_INDEX)) {
                    ack.setTransactionId(ActiveMQXid.read(dataIn));
                }
                else {
                    ack.setTransactionId(super.readUTF(dataIn));
                }
            }
        }
        else {
            ack.setTransactionId(null);
        }
        if (cachingEnabled) {
            short key = dataIn.readShort();
            ack.setConsumerId((String) wireFormat.getValueFromReadCache(key));
            key = dataIn.readShort();
            ack.setDestination((ActiveMQDestination) wireFormat.getValueFromReadCache(key));
        }
        else {
            ack.setConsumerId(dataIn.readUTF());
            ack.setDestination(ActiveMQDestination.readFromStream(dataIn));
        }
    }
View Full Code Here

    }
   
    private void doSendMessageAck(ActiveMQMessage message, boolean messageConsumed, boolean messageExpired)
            throws JMSException {
        if (message != null && !message.isAdvisory()) {
            MessageAck ack = new MessageAck();
            ack.setConsumerId(message.getConsumerIdentifer());
            ack.setTransactionId(transactionContext.getTransactionId());
            ack.setExternalMessageId(message.isExternalMessageId());
            ack.setMessageID(message.getJMSMessageID());
            ack.setSequenceNumber(message.getSequenceNumber());
            ack.setProducerKey(message.getProducerKey());
            ack.setMessageRead(messageConsumed);
            ack.setDestination(message.getJMSActiveMQDestination());
            ack.setPersistent(message.getJMSDeliveryMode() == DeliveryMode.PERSISTENT);
            ack.setExpired(messageExpired);
            ack.setSessionId(getSessionId());
            this.connection.asyncSendPacket(ack);
        }
    }
View Full Code Here

    MessageAckReader reader = new MessageAckReader();
    assertTrue(reader.getPacketType() == Packet.ACTIVEMQ_MSG_ACK);
  }

  public void testReadPacket() {
    MessageAck ack = new MessageAck();
    ack.setId(this.id);
        ack.setConsumerId(this.consumerId);
    ack.setTransactionId(this.transactedId);
        ack.setMessageID(messageId);
        ack.setMessageRead(this.messageRead);
        ack.setPersistent(persistent);
        ack.setDestination(destination);
        ack.setExpired(expired);

    MessageAckWriter writer = new MessageAckWriter();
    MessageAckReader reader = new MessageAckReader();
    try {
      byte[] data = writer.writePacketToByteArray(ack);
      MessageAck mack = (MessageAck) reader.readPacketFromByteArray(data);

      assertTrue(mack.getConsumerId().equals(this.consumerId));
            assertTrue(mack.getTransactionId().equals(this.transactedId));
            assertTrue(mack.isMessageRead()==this.messageRead);
            assertTrue(mack.isPersistent()==this.persistent);
            assertTrue(mack.isExpired()==this.expired);
            assertTrue(mack.isXaTransacted()==this.xaTransacted);
            assertTrue(mack.getDestination().equals(this.destination));
    }
    catch (Throwable e) {
      e.printStackTrace();
      fail(e.getMessage());
    }
View Full Code Here

    }
  }

  public void testTime() {

    MessageAck ack = new MessageAck();
        ack.setId(this.id);
        ack.setConsumerId(this.consumerId);
        ack.setTransactionId(this.transactedId);
        ack.setMessageID(messageId);
        ack.setMessageRead(this.messageRead);
        ack.setPersistent(persistent);
        ack.setDestination(destination);

    MessageAckWriter writer = new MessageAckWriter();
    MessageAckReader reader = new MessageAckReader();
    try {
      int count = 100000;
      long startTime = System.currentTimeMillis();
      for (int i = 0; i < count; i++) {
        byte[] data = writer.writePacketToByteArray(ack);
        MessageAck mack = (MessageAck) reader.readPacketFromByteArray(data);
      }
      long finishTime = System.currentTimeMillis();
      long totalTime = finishTime - startTime;
      long ps = (count * 1000) / totalTime;
      System.out.println("Time taken :" + totalTime + " for " + count + "iterations, = " + ps + " per sec.");
View Full Code Here

TOP

Related Classes of org.activemq.message.MessageAck

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.