/** * Add a message to the publishing queue. A publish call adds to the queue * if the client is unable to publish (offline). * Behavior on a full queue is defined by fullQueueKeepsOldest. If this is true * we keep the oldest values so we skip adding on a full queue. If this is false * we want the queue to always have the latest values so pop the first element out * and append. * * @param data byte array of message payload. * @param topic message topic. * @param qos The quality of service requested for this message. * @param publishMessageUserData The user supplied data for this message including a * callback and context. */ void putMessageInQueueAndNotify(byte[] data, String topic, AWSIotMqttQos qos, PublishMessageUserData publishMessageUserData) { final AWSIotMqttQueueMessage message = new AWSIotMqttQueueMessage(topic, data, qos, publishMessageUserData); if (mqttMessageQueue.size() >= offlinePublishQueueBound) { if (fullQueueKeepsOldest) { notifyPublishResult(publishMessageUserData.getUserCallback(), AWSIotMqttMessageDeliveryCallback.MessageDeliveryStatus.Fail, publishMessageUserData.getUserData(), new AmazonClientException("Failed to publish the message. Queue is full and set to hold onto the oldest messages.")); return; } else { mqttMessageQueue.remove(0); } } mqttMessageQueue.add(message); }
@Before public void setUp() { testObject = new MyTestObject(1, "test", 2.0); qMessage = new AWSIotMqttQueueMessage("test-topic", "test-message".getBytes(StringUtils.UTF8), AWSIotMqttQos.QOS0, new PublishMessageUserData(mdcb, testObject)); }
/** * Add a message to the publishing queue. A publish call adds to the queue * if the client is unable to publish (offline). * Behavior on a full queue is defined by fullQueueKeepsOldest. If this is true * we keep the oldest values so we skip adding on a full queue. If this is false * we want the queue to always have the latest values so pop the first element out * and append. * * @param data byte array of message payload. * @param topic message topic. * @param qos The quality of service requested for this message. * @param publishMessageUserData The user supplied data for this message including a * callback and context. */ void putMessageInQueueAndNotify(byte[] data, String topic, AWSIotMqttQos qos, PublishMessageUserData publishMessageUserData) { final AWSIotMqttQueueMessage message = new AWSIotMqttQueueMessage(topic, data, qos, publishMessageUserData); if (mqttMessageQueue.size() >= offlinePublishQueueBound) { if (fullQueueKeepsOldest) { notifyPublishResult(publishMessageUserData.getUserCallback(), AWSIotMqttMessageDeliveryCallback.MessageDeliveryStatus.Fail, publishMessageUserData.getUserData(), new AmazonClientException("Failed to publish the message. Queue is full and set to hold onto the oldest messages.")); return; } else { mqttMessageQueue.remove(0); } } mqttMessageQueue.add(message); }