Called when a message is received by the subscriber. The implementation must arrange for AckReplyConsumer#ack() or AckReplyConsumer#nack() to be called after processing the
message.
// This {@code MessageReceiver} passes all messages to a BlockingQueue. This method can// be called concurrently from multiple threads, so it is important that the queue be// thread-safe.//// This example is for illustration. Implementations may directly process messages instead of// sending them to queues.MessageReceiverreceiver=newMessageReceiver(){publicvoidreceiveMessage(finalPubsubMessagemessage,finalAckReplyConsumerconsumer){if(blockingQueue.offer(message)){consumer.ack();}else{consumer.nack();}}};
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-28 UTC."],[],[],null,["# Interface MessageReceiver (1.141.2)\n\nVersion latestkeyboard_arrow_down\n\n- [1.141.2 (latest)](/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.141.1](/java/docs/reference/google-cloud-pubsub/1.141.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.140.2](/java/docs/reference/google-cloud-pubsub/1.140.2/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.139.4](/java/docs/reference/google-cloud-pubsub/1.139.4/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.138.0](/java/docs/reference/google-cloud-pubsub/1.138.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.137.1](/java/docs/reference/google-cloud-pubsub/1.137.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.136.1](/java/docs/reference/google-cloud-pubsub/1.136.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.135.0](/java/docs/reference/google-cloud-pubsub/1.135.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.134.2](/java/docs/reference/google-cloud-pubsub/1.134.2/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.133.1](/java/docs/reference/google-cloud-pubsub/1.133.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.132.2](/java/docs/reference/google-cloud-pubsub/1.132.2/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.131.0](/java/docs/reference/google-cloud-pubsub/1.131.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.130.0](/java/docs/reference/google-cloud-pubsub/1.130.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.129.6](/java/docs/reference/google-cloud-pubsub/1.129.6/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.127.3](/java/docs/reference/google-cloud-pubsub/1.127.3/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.126.6](/java/docs/reference/google-cloud-pubsub/1.126.6/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.125.13](/java/docs/reference/google-cloud-pubsub/1.125.13/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.123.18](/java/docs/reference/google-cloud-pubsub/1.123.18/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.122.2](/java/docs/reference/google-cloud-pubsub/1.122.2/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.121.1](/java/docs/reference/google-cloud-pubsub/1.121.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.120.24](/java/docs/reference/google-cloud-pubsub/1.120.24/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.119.1](/java/docs/reference/google-cloud-pubsub/1.119.1/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.118.0](/java/docs/reference/google-cloud-pubsub/1.118.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.117.0](/java/docs/reference/google-cloud-pubsub/1.117.0/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.116.4](/java/docs/reference/google-cloud-pubsub/1.116.4/com.google.cloud.pubsub.v1.MessageReceiver)\n- [1.115.5](/java/docs/reference/google-cloud-pubsub/1.115.5/com.google.cloud.pubsub.v1.MessageReceiver) \n\n public interface MessageReceiver\n\nThis interface can be implemented by users of [Subscriber](/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1.Subscriber) to receive messages.\n\nMethods\n-------\n\n### receiveMessage(PubsubMessage message, AckReplyConsumer consumer)\n\n public abstract void receiveMessage(PubsubMessage message, AckReplyConsumer consumer)\n\nCalled when a message is received by the subscriber. The implementation must arrange for [AckReplyConsumer#ack()](/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1.AckReplyConsumer#com_google_cloud_pubsub_v1_AckReplyConsumer_ack__) or [AckReplyConsumer#nack()](/java/docs/reference/google-cloud-pubsub/latest/com.google.cloud.pubsub.v1.AckReplyConsumer#com_google_cloud_pubsub_v1_AckReplyConsumer_nack__) to be called after processing the\n`message`. \n\n\n // This {@code MessageReceiver} passes all messages to a BlockingQueue. This method can\n // be called concurrently from multiple threads, so it is important that the queue be\n // thread-safe.\n //\n // This example is for illustration. Implementations may directly process messages instead of\n // sending them to queues.\n MessageReceiver receiver =\n new MessageReceiver() {\n public void receiveMessage(final PubsubMessage message, final AckReplyConsumer consumer) {\n if (blockingQueue.offer(message)) {\n consumer.ack();\n } else {\n consumer.nack();\n }\n }\n };"]]