I would peek at how AuthorizationBroker does it.

mainly it's all in the addConsumer, addProducer,  and send methods.


On 7/12/06, Eugene Prokopiev <[EMAIL PROTECTED]> wrote:

> You could reuse the AuthorizationPlugin/AuthorizationBroker and just
> implement your own AuthorizationMap

Thanks, it's very interesting idea ...

> - or just write your own broker
> interceptor and override the methods that the AuthorizationBroker does
> to add security checks to the broker however you wish.
>
>>  Can I
>> implement only one class for intercept sending and recieving events
with
>> user/group info and raise authentication exception if needed?
>>  Need I use
>> something like BrokerFilter and override some methods from it? How can
I
>> turn on my descendant of BrokerFilter for existing broker in this case?
>> Can anybody give me a simple example?
>
>
> Yes
>
> BTW take a look at how the logging interceptor is written; combining
> the BrokerFilter and BrokerPlugin in a single class...
>
>
http://svn.apache.org/repos/asf/incubator/activemq/trunk/activemq-core/src/main/java/org/apache/activemq/broker/util/
>
>
> http://incubator.apache.org/activemq/logging-interceptor.html

I already created this class:

public class MyPlugin extends BrokerPluginSupport {

        public void send(ConnectionContext context, Message messageSend)
throws
Exception {
                System.out.println("SendMessage");
                super.send(context, messageSend);
        }

}

and describe it here:

<beans>
        <bean id="broker" class="org.apache.activemq.broker.BrokerService"
init-method="start" destroy-method="stop">
                <property name="persistent" value="false"/>
                <property name="transportConnectorURIs">
                        <list>
                                <value>tcp://localhost:61234</value>
                        </list>
                </property>
                <property name="plugins">
                        <list>
                                <bean class="MyPlugin"/>
                        </list>
                </property>
        </bean>
</beans>

So, which MutableBrokerFilter methods need I reimplement to catch (and
raise exception if needed) this producer code if producer use wrong
destination:

ActiveMQConnection connection =
ActiveMQConnection.makeConnection("producer1", "pw1",
"tcp://localhost:61234");
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE
);
Destination destination = session.createQueue("monitoring.m1");
MessageProducer producer = session.createProducer(destination);
TextMessage message = session.createTextMessage("Test Message String");
producer.send(message);
session.close();
connection.close();

Which method need I to catch for rejecting recieving message from this
code:

ActiveMQConnection connection =
ActiveMQConnection.makeConnection("consumer1", "pw1",
"tcp://localhost:61234");
connection.start();
Session session = connection.createSession(false, Session.AUTO_ACKNOWLEDGE
);
Destination destination = session.createQueue("monitoring.m1");
MessageConsumer consumer = session.createConsumer(destination);
while (true) {
        Message message = consumer.receive(Long.MAX_VALUE);
}

Is it possible to change message destination in my filter or make a copy
of message and send it to another destination? How can I do it?

--
Thanks,
Eugene Prokopiev





--
Regards,
Hiram

Blog: http://hiramchirino.com

Reply via email to