I guess you need to use ReadThrottleFilterBuilder in this case. Unfortunately, I was even unable to fix your problem with ReadThrottleFilterBuilder. Let me investigate this issue further this weekend.
Thanks, Trustin On 7/27/07, Luis Neves <[EMAIL PROTECTED]> wrote: > > Hi Trustin, > > Trustin Lee wrote: > > On 7/24/07, Luis Neves <[EMAIL PROTECTED]> wrote: > >> Trustin Lee wrote: > > > >> humm... perhaps. > >> I've been experimenting to try to find a way to solve my problem and > >> I've found > >> that if the producer sends a bunch of messages and then shuts down the > >> messageReceived() of the consumer keeps getting called long after the > >> producer > >> is dead. It looks like the messages are held in consumer internal > >> (Mina) Queue, > >> what I think would also help me in this particular case is the > >> hability to > >> specify the maximum number of messages in the consumer Queue.... > >> right? is there > >> anyway to do that? > > > > I created a JIRA issue related with the problem you are describing: > > > > https://issues.apache.org/jira/browse/DIRMINA-405 > > > > I already have checked in the fix. Please try the trunk and let me > > know if it does the job for you. I changed ProtocolCodecFilter not to > > fire messageReceived event and to hold decoded messages until read is > > resumed. > > As fair as I can tell the fix doesn't seem to solve my specific problem, Mina > is > still accepting Messages into its internal queues after the suspendRead() > call. > suspendRead() is more like suspendNotification(). > > Using the following code I would have expected that the "content-#" followed > closely the "Consumer.getReadMessages(): #", but this is not what happens. > Also, I expected the the "Producer.getScheduledWriteMessages(): #" to increase > due to the read suspension of the Consumer, but of course, since the consumer > accepts the message this doesn't happen. > > > Consumer code: > > public void messageReceived(IoSession iosession, Object message) throws > Exception > { > iosession.suspendRead(); > System.out.println("Consumer.getReadMessages(): " + > iosession.getReadMessages()); > iosession.suspendRead(); > System.out.println((String) message); > Thread.sleep(3000); > iosession.resumeRead(); > } > > Producer code: > > for (int i = 0; i < 1000; i++) > { > System.out.println("Producer.getScheduledWriteMessages(): " + > ioSession.getScheduledWriteMessages()); > String message = "content-" + i; > System.out.println(message); > ioSession.write(message).awaitUninterruptibly(); > Thread.sleep(500); > } > > This is the ouput from the Consumer: > > Consumer.getReadMessages(): 1 > message: content-0 > Consumer.getReadMessages(): 6 > message: content-1 > Consumer.getReadMessages(): 12 > message: content-2 > Consumer.getReadMessages(): 18 > message: content-3 > Consumer.getReadMessages(): 18 > message: content-4 > Consumer.getReadMessages(): 18 > message: content-5 > Consumer.getReadMessages(): 18 > message: content-6 > Consumer.getReadMessages(): 18 > message: content-7 > Consumer.getReadMessages(): 18 > message: content-8 > Consumer.getReadMessages(): 18 > message: content-9 > Consumer.getReadMessages(): 18 > message: content-10 > Consumer.getReadMessages(): 66 > message: content-11 > Consumer.getReadMessages(): 72 > message: content-12 > Consumer.getReadMessages(): 72 > message: content-13 > Consumer.getReadMessages(): 84 > message: content-14 > Consumer.getReadMessages(): 90 > message: content-15 > Consumer.getReadMessages(): 96 > message: content-16 > Consumer.getReadMessages(): 102 > message: content-17 > Consumer.getReadMessages(): 102 > message: content-18 > Consumer.getReadMessages(): 102 > message: content-19 > Consumer.getReadMessages(): 102 > message: content-20 > Consumer.getReadMessages(): 102 > message: content-21 > Consumer.getReadMessages(): 102 > message: content-22 > Consumer.getReadMessages(): 102 > message: content-23 > Consumer.getReadMessages(): 102 > message: content-24 > Consumer.getReadMessages(): 102 > message: content-25 > Consumer.getReadMessages(): 102 > message: content-26 > Consumer.getReadMessages(): 102 > message: content-27 > Consumer.getReadMessages(): 102 > message: content-28 > Consumer.getReadMessages(): 102 > message: content-29 > Consumer.getReadMessages(): 102 > message: content-30 > Consumer.getReadMessages(): 102 > message: content-31 > Consumer.getReadMessages(): 102 > message: content-32 > Consumer.getReadMessages(): 102 > message: content-33 > Consumer.getReadMessages(): 102 > message: content-34 > Consumer.getReadMessages(): 102 > message: content-35 > Consumer.getReadMessages(): 214 > message: content-36 > > > > And this is the output of the Producer: > > Producer.getScheduledWriteMessages(): 0 > message: content-0 > Producer.getScheduledWriteMessages(): 0 > message: content-1 > Producer.getScheduledWriteMessages(): 0 > message: content-2 > Producer.getScheduledWriteMessages(): 0 > message: content-3 > Producer.getScheduledWriteMessages(): 0 > message: content-4 > Producer.getScheduledWriteMessages(): 0 > message: content-5 > Producer.getScheduledWriteMessages(): 0 > message: content-6 > Producer.getScheduledWriteMessages(): 0 > message: content-7 > Producer.getScheduledWriteMessages(): 0 > message: content-8 > Producer.getScheduledWriteMessages(): 0 > message: content-9 > Producer.getScheduledWriteMessages(): 0 > message: content-10 > Producer.getScheduledWriteMessages(): 0 > message: content-11 > Producer.getScheduledWriteMessages(): 0 > message: content-12 > Producer.getScheduledWriteMessages(): 0 > message: content-13 > Producer.getScheduledWriteMessages(): 0 > message: content-14 > Producer.getScheduledWriteMessages(): 0 > message: content-15 > Producer.getScheduledWriteMessages(): 0 > message: content-16 > Producer.getScheduledWriteMessages(): 0 > message: content-17 > Producer.getScheduledWriteMessages(): 0 > message: content-18 > Producer.getScheduledWriteMessages(): 0 > message: content-19 > Producer.getScheduledWriteMessages(): 0 > message: content-20 > Producer.getScheduledWriteMessages(): 0 > message: content-21 > Producer.getScheduledWriteMessages(): 0 > message: content-22 > Producer.getScheduledWriteMessages(): 0 > message: content-23 > Producer.getScheduledWriteMessages(): 0 > message: content-24 > Producer.getScheduledWriteMessages(): 0 > message: content-25 > Producer.getScheduledWriteMessages(): 0 > message: content-26 > Producer.getScheduledWriteMessages(): 0 > message: content-27 > Producer.getScheduledWriteMessages(): 0 > message: content-28 > Producer.getScheduledWriteMessages(): 0 > message: content-29 > Producer.getScheduledWriteMessages(): 0 > message: content-30 > Producer.getScheduledWriteMessages(): 0 > message: content-31 > Producer.getScheduledWriteMessages(): 0 > message: content-32 > Producer.getScheduledWriteMessages(): 0 > message: content-33 > Producer.getScheduledWriteMessages(): 0 > message: content-34 > Producer.getScheduledWriteMessages(): 0 > message: content-35 > Producer.getScheduledWriteMessages(): 0 > message: content-36 > Producer.getScheduledWriteMessages(): 0 > message: content-37 > Producer.getScheduledWriteMessages(): 0 > message: content-38 > Producer.getScheduledWriteMessages(): 0 > message: content-39 > Producer.getScheduledWriteMessages(): 0 > message: content-40 > Producer.getScheduledWriteMessages(): 0 > message: content-41 > Producer.getScheduledWriteMessages(): 0 > message: content-42 > Producer.getScheduledWriteMessages(): 0 > message: content-43 > Producer.getScheduledWriteMessages(): 0 > message: content-44 > Producer.getScheduledWriteMessages(): 0 > message: content-45 > Producer.getScheduledWriteMessages(): 0 > message: content-46 > Producer.getScheduledWriteMessages(): 0 > message: content-47 > Producer.getScheduledWriteMessages(): 0 > message: content-48 > Producer.getScheduledWriteMessages(): 0 > message: content-49 > Producer.getScheduledWriteMessages(): 0 > message: content-50 > Producer.getScheduledWriteMessages(): 0 > message: content-51 > Producer.getScheduledWriteMessages(): 0 > message: content-52 > Producer.getScheduledWriteMessages(): 0 > message: content-53 > Producer.getScheduledWriteMessages(): 0 > message: content-54 > Producer.getScheduledWriteMessages(): 0 > message: content-55 > Producer.getScheduledWriteMessages(): 0 > message: content-56 > Producer.getScheduledWriteMessages(): 0 > message: content-57 > Producer.getScheduledWriteMessages(): 0 > message: content-58 > Producer.getScheduledWriteMessages(): 0 > message: content-59 > Producer.getScheduledWriteMessages(): 0 > message: content-60 > Producer.getScheduledWriteMessages(): 0 > message: content-61 > Producer.getScheduledWriteMessages(): 0 > message: content-62 > Producer.getScheduledWriteMessages(): 0 > message: content-63 > Producer.getScheduledWriteMessages(): 0 > message: content-64 > Producer.getScheduledWriteMessages(): 0 > message: content-65 > Producer.getScheduledWriteMessages(): 0 > message: content-66 > Producer.getScheduledWriteMessages(): 0 > message: content-67 > Producer.getScheduledWriteMessages(): 0 > message: content-68 > Producer.getScheduledWriteMessages(): 0 > message: content-69 > Producer.getScheduledWriteMessages(): 0 > message: content-70 > Producer.getScheduledWriteMessages(): 0 > message: content-71 > Producer.getScheduledWriteMessages(): 0 > message: content-72 > Producer.getScheduledWriteMessages(): 0 > message: content-73 > Producer.getScheduledWriteMessages(): 0 > message: content-74 > Producer.getScheduledWriteMessages(): 0 > message: content-75 > Producer.getScheduledWriteMessages(): 0 > message: content-76 > Producer.getScheduledWriteMessages(): 0 > message: content-77 > Producer.getScheduledWriteMessages(): 0 > message: content-78 > Producer.getScheduledWriteMessages(): 0 > message: content-79 > Producer.getScheduledWriteMessages(): 0 > message: content-80 > Producer.getScheduledWriteMessages(): 0 > message: content-81 > Producer.getScheduledWriteMessages(): 0 > message: content-82 > Producer.getScheduledWriteMessages(): 0 > message: content-83 > Producer.getScheduledWriteMessages(): 0 > message: content-84 > Producer.getScheduledWriteMessages(): 0 > message: content-85 > Producer.getScheduledWriteMessages(): 0 > message: content-86 > Producer.getScheduledWriteMessages(): 0 > message: content-87 > Producer.getScheduledWriteMessages(): 0 > message: content-88 > Producer.getScheduledWriteMessages(): 0 > message: content-89 > Producer.getScheduledWriteMessages(): 0 > message: content-90 > Producer.getScheduledWriteMessages(): 0 > message: content-91 > Producer.getScheduledWriteMessages(): 0 > message: content-92 > Producer.getScheduledWriteMessages(): 0 > message: content-93 > Producer.getScheduledWriteMessages(): 0 > message: content-94 > Producer.getScheduledWriteMessages(): 0 > message: content-95 > Producer.getScheduledWriteMessages(): 0 > message: content-96 > Producer.getScheduledWriteMessages(): 0 > message: content-97 > Producer.getScheduledWriteMessages(): 0 > message: content-98 > Producer.getScheduledWriteMessages(): 0 > message: content-99 > Producer.getScheduledWriteMessages(): 0 > message: content-100 > Producer.getScheduledWriteMessages(): 0 > message: content-101 > Producer.getScheduledWriteMessages(): 0 > message: content-102 > Producer.getScheduledWriteMessages(): 0 > message: content-103 > Producer.getScheduledWriteMessages(): 0 > message: content-104 > Producer.getScheduledWriteMessages(): 0 > message: content-105 > Producer.getScheduledWriteMessages(): 0 > message: content-106 > Producer.getScheduledWriteMessages(): 0 > message: content-107 > Producer.getScheduledWriteMessages(): 0 > message: content-108 > Producer.getScheduledWriteMessages(): 0 > message: content-109 > Producer.getScheduledWriteMessages(): 0 > message: content-110 > Producer.getScheduledWriteMessages(): 0 > message: content-111 > Producer.getScheduledWriteMessages(): 0 > message: content-112 > Producer.getScheduledWriteMessages(): 0 > message: content-113 > Producer.getScheduledWriteMessages(): 0 > message: content-114 > Producer.getScheduledWriteMessages(): 0 > message: content-115 > Producer.getScheduledWriteMessages(): 0 > message: content-116 > Producer.getScheduledWriteMessages(): 0 > message: content-117 > Producer.getScheduledWriteMessages(): 0 > message: content-118 > Producer.getScheduledWriteMessages(): 0 > message: content-119 > Producer.getScheduledWriteMessages(): 0 > message: content-120 > Producer.getScheduledWriteMessages(): 0 > message: content-121 > Producer.getScheduledWriteMessages(): 0 > message: content-122 > Producer.getScheduledWriteMessages(): 0 > message: content-123 > Producer.getScheduledWriteMessages(): 0 > message: content-124 > Producer.getScheduledWriteMessages(): 0 > message: content-125 > Producer.getScheduledWriteMessages(): 0 > message: content-126 > Producer.getScheduledWriteMessages(): 0 > message: content-127 > Producer.getScheduledWriteMessages(): 0 > message: content-128 > Producer.getScheduledWriteMessages(): 0 > message: content-129 > Producer.getScheduledWriteMessages(): 0 > message: content-130 > Producer.getScheduledWriteMessages(): 0 > message: content-131 > Producer.getScheduledWriteMessages(): 0 > message: content-132 > Producer.getScheduledWriteMessages(): 0 > message: content-133 > Producer.getScheduledWriteMessages(): 0 > message: content-134 > Producer.getScheduledWriteMessages(): 0 > message: content-135 > Producer.getScheduledWriteMessages(): 0 > message: content-136 > Producer.getScheduledWriteMessages(): 0 > message: content-137 > Producer.getScheduledWriteMessages(): 0 > message: content-138 > Producer.getScheduledWriteMessages(): 0 > message: content-139 > Producer.getScheduledWriteMessages(): 0 > message: content-140 > Producer.getScheduledWriteMessages(): 0 > message: content-141 > Producer.getScheduledWriteMessages(): 0 > message: content-142 > Producer.getScheduledWriteMessages(): 0 > message: content-143 > Producer.getScheduledWriteMessages(): 0 > message: content-144 > Producer.getScheduledWriteMessages(): 0 > message: content-145 > Producer.getScheduledWriteMessages(): 0 > message: content-146 > Producer.getScheduledWriteMessages(): 0 > message: content-147 > Producer.getScheduledWriteMessages(): 0 > message: content-148 > Producer.getScheduledWriteMessages(): 0 > message: content-149 > Producer.getScheduledWriteMessages(): 0 > message: content-150 > Producer.getScheduledWriteMessages(): 0 > message: content-151 > Producer.getScheduledWriteMessages(): 0 > message: content-152 > Producer.getScheduledWriteMessages(): 0 > message: content-153 > Producer.getScheduledWriteMessages(): 0 > message: content-154 > Producer.getScheduledWriteMessages(): 0 > message: content-155 > Producer.getScheduledWriteMessages(): 0 > message: content-156 > Producer.getScheduledWriteMessages(): 0 > message: content-157 > Producer.getScheduledWriteMessages(): 0 > message: content-158 > Producer.getScheduledWriteMessages(): 0 > message: content-159 > Producer.getScheduledWriteMessages(): 0 > message: content-160 > Producer.getScheduledWriteMessages(): 0 > message: content-161 > Producer.getScheduledWriteMessages(): 0 > message: content-162 > Producer.getScheduledWriteMessages(): 0 > message: content-163 > Producer.getScheduledWriteMessages(): 0 > message: content-164 > Producer.getScheduledWriteMessages(): 0 > message: content-165 > Producer.getScheduledWriteMessages(): 0 > message: content-166 > Producer.getScheduledWriteMessages(): 0 > message: content-167 > Producer.getScheduledWriteMessages(): 0 > message: content-168 > Producer.getScheduledWriteMessages(): 0 > message: content-169 > Producer.getScheduledWriteMessages(): 0 > message: content-170 > Producer.getScheduledWriteMessages(): 0 > message: content-171 > Producer.getScheduledWriteMessages(): 0 > message: content-172 > Producer.getScheduledWriteMessages(): 0 > message: content-173 > Producer.getScheduledWriteMessages(): 0 > message: content-174 > Producer.getScheduledWriteMessages(): 0 > message: content-175 > Producer.getScheduledWriteMessages(): 0 > message: content-176 > Producer.getScheduledWriteMessages(): 0 > message: content-177 > Producer.getScheduledWriteMessages(): 0 > message: content-178 > Producer.getScheduledWriteMessages(): 0 > message: content-179 > Producer.getScheduledWriteMessages(): 0 > message: content-180 > Producer.getScheduledWriteMessages(): 0 > message: content-181 > Producer.getScheduledWriteMessages(): 0 > message: content-182 > Producer.getScheduledWriteMessages(): 0 > message: content-183 > Producer.getScheduledWriteMessages(): 0 > message: content-184 > Producer.getScheduledWriteMessages(): 0 > message: content-185 > Producer.getScheduledWriteMessages(): 0 > message: content-186 > Producer.getScheduledWriteMessages(): 0 > message: content-187 > Producer.getScheduledWriteMessages(): 0 > message: content-188 > Producer.getScheduledWriteMessages(): 0 > message: content-189 > Producer.getScheduledWriteMessages(): 0 > message: content-190 > Producer.getScheduledWriteMessages(): 0 > message: content-191 > Producer.getScheduledWriteMessages(): 0 > message: content-192 > Producer.getScheduledWriteMessages(): 0 > message: content-193 > Producer.getScheduledWriteMessages(): 0 > message: content-194 > Producer.getScheduledWriteMessages(): 0 > message: content-195 > Producer.getScheduledWriteMessages(): 0 > message: content-196 > Producer.getScheduledWriteMessages(): 0 > message: content-197 > Producer.getScheduledWriteMessages(): 0 > message: content-198 > Producer.getScheduledWriteMessages(): 0 > message: content-199 > Producer.getScheduledWriteMessages(): 0 > message: content-200 > Producer.getScheduledWriteMessages(): 0 > message: content-201 > Producer.getScheduledWriteMessages(): 0 > message: content-202 > Producer.getScheduledWriteMessages(): 0 > message: content-203 > Producer.getScheduledWriteMessages(): 0 > message: content-204 > Producer.getScheduledWriteMessages(): 0 > message: content-205 > Producer.getScheduledWriteMessages(): 0 > message: content-206 > Producer.getScheduledWriteMessages(): 0 > message: content-207 > Producer.getScheduledWriteMessages(): 0 > message: content-208 > Producer.getScheduledWriteMessages(): 0 > message: content-209 > Producer.getScheduledWriteMessages(): 0 > message: content-210 > Producer.getScheduledWriteMessages(): 0 > message: content-211 > Producer.getScheduledWriteMessages(): 0 > message: content-212 > Producer.getScheduledWriteMessages(): 0 > message: content-213 > Producer.getScheduledWriteMessages(): 0 > message: content-214 > > > -- > Luis Neves > > -- what we call human nature is actually human habit -- http://gleamynode.net/ -- PGP Key ID: 0x0255ECA6