2010-11-10 3 views
1

Tous dans le contexte de Tibco EMS 5. * et API .NETTravailler autour prélecture dans Tibco EMS et API .NET

J'ai à travailler le long modèle existant de traitement des messages, dans lequel dans une boucle:

    connexion
  • est créé/open
  • session est créée/open
  • consommateur message est créé
  • reçoivent méthode est appelée

Si le message! = Null, nous le consommons et validons ou annulons la transaction (sur la session sous-jacente). Le système tire toutes les x secondes dans ce modèle.

J'ai créé une fabrique de connexions qui assure que seules les nouvelles sessions sont créées (si la session précédente est toujours utilisée). De cette façon, le système fonctionne sur la même connexion.

Cependant, j'ai rencontré un problème avec le pré-chargement car chaque appel Recevoir (par l'interface .NET) renvoie un message et met plusieurs (pré-fetch-1) dans la file d'attente locale. Je devrais donc réutiliser la même session la prochaine fois afin de pouvoir lire les messages déjà extraits. J'ai mis dans des enveloppes pour réutiliser le consommateur de message de session & tant qu'il y a quelque chose là (Recevoir ne renverra pas nul). Cette approche fonctionne en quelque sorte, mais il semble que j'aurais pu obtenir une valeur nulle lors de la réception, même s'il reste encore quelque chose récupéré localement. Il semble aussi que tant que je suis sur la même connexion, les messages récupérés seront marqués comme remis (même si la session est explicitement fermée).

Est-ce que quelqu'un aurait une idée de comment ouvrir une connexion/session avec pré-fetch = 1? Ou y a-t-il une meilleure solution?

Merci à l'avance,

Répondre

1

Solution: préchargement turn-off au niveau de la file d'attente.

+0

Comment avez-vous désactivé la prélecture? Utilisez-vous des files d'attente statiques? –