问题描述
我们希望在Mule 4中一次将来自JMS MQ(入站)的所有消息作为一个组进行处理。 为了在Mule 3中实现此功能,我们在JMS连接器中使用了自定义java类和服务替代。如何在Mule 4中实现相同的功能。
pub struct Node<T: FooTrait> {
items: Vec<*mut T>,}
impl <T: FooTrait<T=T>> Node<T> {
pub fn new() ->Node<T> {
Node {
items: Default::default(),}
}
pub fn insert(&mut self,item: &mut T) {
let handle = Handle::new(self,0);
item.set_handle(handle);
self.items.push(item);
}
pub fn remove(&mut self,index: u16) {
self.items.swap_remove(index as usize);
}
}
pub struct Handle<X:FooTrait> {
node: *mut Node<X>,index: u16,}
impl <T:FooTrait> Handle<T> {
fn new(node: &mut Node<T>,i: u16) -> Handle<T> {
Handle {
node: node,index: i
}
}
}
impl <X:FooTrait> Drop for Handle<X> {
fn drop(&mut self) {
unsafe {
let m = self.node.as_mut().unwrap();
m.remove(self.index); // <<----- ???
}
}
}
pub trait FooTrait {
type T : FooTrait;
fn set_handle(&mut self,h: Handle<Self::T>);
}
解决方法
Mule 4中没有服务替代。您需要完全共享您的自定义代码所执行的操作,以查看Mule 4中是否具有等效功能。如果只是为了聚合消息,您可能会发现{{ 3}}有助于实现此目的,而无需自定义代码。