Announcement Announcement Module
No announcement yet.
How do I create the Custom channels from the GA version Page Title Module
Move Remove Collapse
Conversation Detail Module
  • Filter
  • Time
  • Show
Clear All
new posts

  • How do I create the Custom channels from the GA version


    When I was using M5 version of SI I could create Custom Channels.
    This was through extending the AbstractMessageChannel and AbstractChannelFactory.
    <message-bus  channel-factory="channelfactory"/>
            <beans:bean id="channelfactory" class="nssi.NSChannelFactory" />
            <channel id="receive" />
    How do I do it with the SI GA release 1.0.1 ?

    Or is it not possible ?

    Should I use Channel Adapters (Source Adapters)
    Can this feature be brought in again if not possible in the current release (probably in the next version) ?

    Kindly reply.


  • #2
    In the lead up to the final release, we decided that the channels themselves are essentially core infrastructure and extending those should not be necessary. The available extension points should be flexible enough to accommodate any extensions: ChannelInterceptor and ChannelAdapter.

    Can you describe what you plan to do with a custom channel? Hopefully, what you are trying to do may be achievable with Channel Adapters, but if there is no way to accommodate the requirement, then we need to consider the particular use-case.


    • #3
      Hi Mark,

      Thanks for your reply.

      I work on a platform which provides IPC (like any other).
      The model is very much similar to Request and Reply channel. However there the Request and Reply Channels are the same. The process is blocked until something is put in the request queue. And then there is a processing and reply put in the reply queue and again it waits. (Nothing special so far).

      I had modeled the above system in pre Release SI, making the Request and Reply Channels as one and abstracting the Business Logic or Endpoint so that
      writing IPC programs are easy on that platform. My previous program worked well.
      With the previous model, My Channel implementation would be started and be blocked till there was a request in the queue. And I could reply to the same queue.

      However the SI-API changed. As you said and I had thought, now with this release I have to use Adapters.
      However there is one thing which I find it difficult to understand, since I am not conversant with Spring Task Scheduler.
      I went through the documentation and found some cursory information in the Appendix of using a taskScheduler to control Pollers.

      Is the following possible ?

      1.) I dont want to poll for an input.
      2.) What happens if multiple threads get queued up due to polling ?
      3.) Can a poller be made to wait to get a re-start kind of signal ? Or can it be controlled ? Like the following
      Thread 1 ---> starts up ----> Starts the poller (Single Threaded) ---> gets the data from input channel adapter ---> activates the service-activator--->calls the output channel adapter ---> waits for the input again!

      I am using ChannelInterceptors since the IPC doesnt understand anything apart from bytes! But I dont know how this helps in my above scenario.

      An example of using a Randezvous Channel (Clubbing with a taskScheduler to control poller) will be helpful. If not an outline too would be very helpful.
      I am using XML model to not get attached to SI-API for processing/business logic.