J'utilise l'interface Oracle Java pour AQ et je souhaite supprimer les messages. Ces messages se composent de deux champs:Interface Java Oracle AQ et types de messages personnalisés
- Un identifiant de ligne unique.
- ID non unique.
Je décodée avec succès des messages en utilisant une seule charge utile RAW comme ceci:
AQDequeueOption option = new AQDequeueOption();
option.setDequeueMode(AQDequeueOption.DEQUEUE_REMOVE);
AQMessage message = queue.dequeue(option);
RAW raw = new RAW(message.getRawPayload().getBytes());
Integer rowId = Integer.valueOf(raw.stringValue());
Je me souviens avoir lu STH. le long des lignes que les types personnalisés ne sont pas pris en charge dans l'interface Java. Est-ce vrai? A quoi ressemblerait l'appel correspondant AQQueueTableProperty
ou dois-je créer la table de file d'attente et de file d'attente dans SQL? Le résultat de l'opération de suppression de la file d'attente ne peut-il pas être mappé à une représentation Java à l'aide des opérations JDBC ResultSet
habituelles?
Mon approche actuelle pour résoudre le problème du 'message futur' (http://stackoverflow.com/questions/1763970/oracle-aq-dequeue-order) consiste à appeler une procédure de paquetage pendant la déqueue, alors oui, je n'ai probablement pas le choix autre que l'utilisation d'une procédure PL/SQL. JDBC-sage le résultat d'une telle file d'attente serait un 'ResultSet 'ordinaire, correct? – yawn