/* * Copyright (c) 2008-2017, Hazelcast, Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.hazelcast.core; import java.util.EventListener; /** * Message listener for {@link ITopic}. * * Provided that a MessageListener is not registered twice, a MessageListener will never be called concurrently. So there * is no need to provide thread-safety on internal state in the MessageListener. Also there is no need to enforce safe * publication, the ITopic is responsible for the memory consistency effects. In other words, there is no need to make * internal fields of the MessageListener volatile or access them using synchronized blocks. * * @param <E> message */ public interface MessageListener<E> extends EventListener { /** * Invoked when a message is received for the added topic. Note that topic guarantees message ordering. * Therefore there is only one thread invoking onMessage. The user should not keep the thread busy, but preferably * should dispatch it via an Executor. This will increase the performance of the topic. * * @param message the message that is received for the added topic */ void onMessage(Message<E> message); }