You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@uima.apache.org by Spico Florin <sp...@gmail.com> on 2013/03/18 15:42:36 UTC

Discard already sent asynchronously CASes to UIMA AS pipeline

Hello!
  I have a consumer UIMA AS pipeline, and a CAS producer that is using
UimaAsynchronousEngine  to send asynchronously CASes to UIMA. The code for
producing (producer pipeline) the CASes is:
UimaAsynchronousEngine uimaEEEngine;

        cas = uimaEEEngine.getCAS();
       if (cas != null) {

        jcas = cas.getJCas();
        jcas.setDocumentText(msg.get(MSG_ARTICLE_TEXT));

        uimaEEEngine.sendCAS(jcas.getCas());
      }

Code for stopping the producer:
      if (uimaEEEngine != null) {
        uimaEEEngine.stopProducingCases();
        uimaEEEngine.stop();
      }

Question:
 1.When the user stops the producer, is there any possibility for UIMA AS
pipeline to discard the sent messages from the producer?
 2. If yes, what code (API) should I use?

I look forward for your answers.

Regards,
  Florin

Re: Discard already sent asynchronously CASes to UIMA AS pipeline

Posted by Spico Florin <sp...@gmail.com>.
Hello!
  Thank you for the response. My remote service has an
AgrregateAnalyssEngine that handles (remote and also co-located) NON CAS
Multiplier AnalysisEngine.

Thanks you very much and I look forward for fix.
Regards,
  Florin



On Mon, Mar 18, 2013 at 6:11 PM, Jaroslaw Cwiklik <ui...@gmail.com> wrote:

> Spico, both of these:
>
> stopProducingCases()
> stopProducingCases(String casReferenceId);
>
> were meant to stop remote UIMA-AS CM from producing child CASes.
>
> So the first question is, is your remote service (UIMA-AS pipeline) a CM?
> If it is, what is the behavior that you are seeing? A hang?
>
> If the remote service is not a CM, the above APIs will not work ( BUG).
>
> Each UIMA-AS CM service gets a unique queue which is used to receive
> notifications from the client. Non CM service does not create this queue
> and thus
> notifications to discard CASes are never sent. I will create JIRA to track
> this bug. It should be possible for the UIMA-AS client to request the
> service
> to stop processing a CAS no matter if its CM or not.
>
> Jerry C
>
>
> On Mon, Mar 18, 2013 at 10:42 AM, Spico Florin <spicoflorin@gmail.com
> >wrote:
>
> > Hello!
> >   I have a consumer UIMA AS pipeline, and a CAS producer that is using
> > UimaAsynchronousEngine  to send asynchronously CASes to UIMA. The code
> for
> > producing (producer pipeline) the CASes is:
> > UimaAsynchronousEngine uimaEEEngine;
> >
> >         cas = uimaEEEngine.getCAS();
> >        if (cas != null) {
> >
> >         jcas = cas.getJCas();
> >         jcas.setDocumentText(msg.get(MSG_ARTICLE_TEXT));
> >
> >         uimaEEEngine.sendCAS(jcas.getCas());
> >       }
> >
> > Code for stopping the producer:
> >       if (uimaEEEngine != null) {
> >         uimaEEEngine.stopProducingCases();
> >         uimaEEEngine.stop();
> >       }
> >
> > Question:
> >  1.When the user stops the producer, is there any possibility for UIMA AS
> > pipeline to discard the sent messages from the producer?
> >  2. If yes, what code (API) should I use?
> >
> > I look forward for your answers.
> >
> > Regards,
> >   Florin
> >
>

Re: Discard already sent asynchronously CASes to UIMA AS pipeline

Posted by Jaroslaw Cwiklik <ui...@gmail.com>.
Spico, both of these:

stopProducingCases()
stopProducingCases(String casReferenceId);

were meant to stop remote UIMA-AS CM from producing child CASes.

So the first question is, is your remote service (UIMA-AS pipeline) a CM?
If it is, what is the behavior that you are seeing? A hang?

If the remote service is not a CM, the above APIs will not work ( BUG).

Each UIMA-AS CM service gets a unique queue which is used to receive
notifications from the client. Non CM service does not create this queue
and thus
notifications to discard CASes are never sent. I will create JIRA to track
this bug. It should be possible for the UIMA-AS client to request the
service
to stop processing a CAS no matter if its CM or not.

Jerry C


On Mon, Mar 18, 2013 at 10:42 AM, Spico Florin <sp...@gmail.com>wrote:

> Hello!
>   I have a consumer UIMA AS pipeline, and a CAS producer that is using
> UimaAsynchronousEngine  to send asynchronously CASes to UIMA. The code for
> producing (producer pipeline) the CASes is:
> UimaAsynchronousEngine uimaEEEngine;
>
>         cas = uimaEEEngine.getCAS();
>        if (cas != null) {
>
>         jcas = cas.getJCas();
>         jcas.setDocumentText(msg.get(MSG_ARTICLE_TEXT));
>
>         uimaEEEngine.sendCAS(jcas.getCas());
>       }
>
> Code for stopping the producer:
>       if (uimaEEEngine != null) {
>         uimaEEEngine.stopProducingCases();
>         uimaEEEngine.stop();
>       }
>
> Question:
>  1.When the user stops the producer, is there any possibility for UIMA AS
> pipeline to discard the sent messages from the producer?
>  2. If yes, what code (API) should I use?
>
> I look forward for your answers.
>
> Regards,
>   Florin
>