org.springframework.messaging

## Interface MessageChannel

All Known Subinterfaces:
  PollableChannel, SubscribableChannel

All Known Implementing Classes:
  AbstractMessageChannel, AbstractSubscribableChannel, ExecutorSubscribableChannel

Functional Interface:
  This is a functional interface and can therefore be used as the assignment target for a lambda expression or method reference.

    @FunctionalInterface
    public interface MessageChannel

Defines methods for sending messages.

Since:
  4.0
Author:
  Mark Fisher

### Field Summary

Fields
`static long` `INDEFINITE_TIMEOUT` Constant for sending a message without a prescribed timeout.

### Method Summary

All Methods Instance Methods Abstract Methods Default Methods
`default boolean` `send(Message<?> message)` Send a `Message` to this channel.
`boolean` `send(Message<?> message, long timeout)` Send a message, blocking until either the message is accepted or the specified timeout period elapses.

### Field Detail

#### INDEFINITE_TIMEOUT

    static final long INDEFINITE_TIMEOUT

Constant for sending a message without a prescribed timeout.

See Also:
  Constant Field Values

### Method Detail

#### send

    default boolean send(Message<?> message)

Send a `Message` to this channel. If the message is sent successfully, the method returns `true`. If the message cannot be sent due to a non-fatal reason, the method returns `false`. The method may also throw a RuntimeException in case of non-recoverable errors.

This method may block indefinitely, depending on the implementation. To provide a maximum wait time, use `send(Message, long)`.

Parameters:
  `message` - the message to send
Returns:
  whether or not the message was sent

#### send

    boolean send(Message<?> message,
                 long timeout)

Send a message, blocking until either the message is accepted or the specified timeout period elapses.

Parameters:
  `message` - the message to send
  `timeout` - the timeout in milliseconds or `INDEFINITE_TIMEOUT`
Returns:
  `true` if the message is sent, `false` if not including a timeout of an interrupt of the send