Message Flow Control
Hello,
as I read, WLS provides the possibility to slow down message producers when certain paging thresholds are exceeded. I'm not quite sure, if the slow down of a producer is tied to it's session lifecycle, i.e. if the producer is slowed down only within its current session - or are producers, which are created from a new session, also slowed down right from the start.
It would be great if someone could answer that. Unfortunately I have found nothing about that in the documentation.
Regards,
Dirk
Hello Tom.
First of all, thank you for your quick response. This forum is really working!
I searched for this topic in the documentation, but didn't find anything appropriate explaining the in-depth details of the JMS flow control mechanism. Therefore, I wrote a simple test case (implementation and server configuration is attached at the end of this message) to check the flow control handling for certain conditions. Since there is no API to access the flow control properties of a message producer, I measured the JMS throughput within the test case and tried to derive some conclusions.
Regarding the server configuration:
- I configured one JMS Server (Test_JMSServer) with one Queue (TestQueue). I enabled the message paging at server level, starting at 1000 messages (i.e. message threshold high). The lower message threshold was set to 100 messages. As a paging store a file store (TestPagingStore) was used.
- Message thresholds at destination level was disabled.
- I further configured a connection factory (TestConnectionFactory) for which I enabled the flow control with a max. throughput of 50 msg/sec and a min. throughput of 1 msg/sec. The flow interval was set to 60 seconds, the number of steps was set to 6.
Regarding the test case:
There are 3 scenarios within the test case. Within each scenario
- first all messages are consumed from the queue,
- then 1000 messages are send to the queue in a row, thereby measuring the throughput,
- finally again 1000 messages are send to the queue in a row, thereby measuring the throughput.
The scenarios differ in how the bulk-send operation is performed.
- The first scenario (test_noReuse) creates a new connection for each message to be send.
- The second scenario (test_sessionReuse) creates a new session at the start and reuses that session for sending the messages. A new sender is created of each message.
- The third scenario (test_senderReuse) creates a new sender at the start and reuses that sender for sending the messages.
Here are the results of the test:
==[test_noReuse]=======================
Cleaned up <2000> messages.
Throughput (messages/second): 51 [startMillis=1161249409788;endMillis=1161249429210;messagesSend=1000]
Throughput (messages/second): 62 [startMillis=1161249429210;endMillis=1161249445304;messagesSend=1000]
==[test_sessionReuse]=======================
Cleaned up <2000> messages.
Throughput (messages/second): 231 [startMillis=1161249452773;endMillis=1161249457101;messagesSend=1000]
Throughput (messages/second): 245 [startMillis=1161249457101;endMillis=1161249461179;messagesSend=1000]
==[test_senderReuse]=======================
Cleaned up <2000> messages.
Throughput (messages/second): 790 [startMillis=1161249467351;endMillis=1161249468616;messagesSend=1000]
Throughput (messages/second): 1 [startMillis=1161249468616;endMillis=1161249999226;messagesSend=1000]
To me it seems, that reusing a session has no effect on the message flow control if a new sender is created for sending a message. The only scenario where a throttling occurs (at least it seems to be that way) is the last scenario, where the sender is reused for all messages.
So my conclusion is, that message control flow is superfluous to configure, as long as
- you don't have a small amount of (batch) message producers, each of which reusing a single sender for each message,
- or you have some cache of senders (or a single sender) in your application and reuse the cached senders for sending messages.
The latter is, of course, strongly discouraged, since neither JMS sessions, nor senders are thread-safe. So you need to implement some thread-safe cache and also have to deal with re-creating stalled JMS resources within that cache -- a really non-trivial implementation. Further, if many different threads produce messages, the flow control has no (or at least few) effect on the message load in the server.
I just ask myself, what the flow control was designed for, since the cases where it really applies are rather rare, IMHO. Or have I made some error in the test or in the server configuration?
Best regards,
Dirk
The test class:
<pre>
import java.util.Hashtable;
import javax.jms.BytesMessage;
import javax.jms.JMSException;
import javax.jms.Message;
import javax.jms.Queue;
import javax.jms.QueueConnection;
import javax.jms.QueueConnectionFactory;
import javax.jms.QueueReceiver;
import javax.jms.QueueSender;
import javax.jms.QueueSession;
import javax.jms.Session;
import javax.naming.InitialContext;
import junit.framework.TestCase;
public class JMSFlowControlTest extends TestCase {
private int messagesThresholdHigh = 1000;
private QueueConnectionFactory conFactory;
private Queue queue = null;
protected void setUp() throws Exception {
super.setUp();
InitialContext ctx = null;
Hashtable ctxEnv = null;
ctxEnv = new Hashtable();
ctxEnv.put(
InitialContext.INITIAL_CONTEXT_FACTORY,
"weblogic.jndi.WLInitialContextFactory");
ctxEnv.put(
InitialContext.PROVIDER_URL,
"t3://localhost:7001");
ctx = new InitialContext(ctxEnv);
this.queue = (Queue) ctx.lookup("jms/queue/TestQueue");
this.conFactory = (QueueConnectionFactory)
ctx.lookup("jms/factory/TestConnectionFactory");
public void test_noReuse() throws Exception {
System.out.println();
System.out.println("==[" + this.getName() + "]=======================");
this.cleanupQueue();
System.out.println(
this.bulkSendMessage(
this.messagesThresholdHigh,
1024));
System.out.println(
this.bulkSendMessage(
this.messagesThresholdHigh,
1024));
public void test_sessionReuse() throws Exception {
QueueConnection con = null;
QueueSession session = null;
System.out.println();
System.out.println("==[" + this.getName() + "]=======================");
try {
con = this.conFactory.createQueueConnection();
session =
con.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
this.cleanupQueue();
System.out.println(
this.bulkSendMessage(
session,
this.messagesThresholdHigh,
1024));
System.out.println(
this.bulkSendMessage(
session,
this.messagesThresholdHigh,
1024));
} finally {
if (con != null) {
try {
con.close();
} catch (JMSException e) {}
public void test_senderReuse() throws Exception {
QueueConnection con = null;
QueueSession session = null;
QueueSender sender = null;
System.out.println();
System.out.println("==[" + this.getName() + "]=======================");
try {
con = this.conFactory.createQueueConnection();
session =
con.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
sender = session.createSender(this.queue);
this.cleanupQueue();
System.out.println(
this.bulkSendMessage(
session,
sender,
this.messagesThresholdHigh,
1024));
System.out.println(
this.bulkSendMessage(
session,
sender,
this.messagesThresholdHigh,
1024));
} finally {
if (con != null) {
try {
con.close();
} catch (JMSException e) {}
private Throughput
bulkSendMessage(
int messagesToSend,
int messageSizeBytes)
throws Exception {
int messagesSend = 0;
long startMillis = 0L;
long endMillis = 0L;
QueueConnection con = null;
QueueSession session = null;
QueueSender sender = null;
startMillis = System.currentTimeMillis();
for (int i = 0; i < messagesToSend; i++) {
try {
con = this.conFactory.createQueueConnection();
session =
con.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
sender = session.createSender(this.queue);
sender.send(this.createMessage(session, messageSizeBytes));
messagesSend++;
} finally {
if (con != null) {
try {
con.close();
} catch (JMSException e) {}
endMillis = System.currentTimeMillis();
return new Throughput(startMillis, endMillis, messagesSend);
private Throughput
bulkSendMessage(
QueueSession session,
int messagesToSend,
int messageSizeBytes)
throws Exception {
int messagesSend = 0;
long startMillis = 0L;
long endMillis = 0L;
QueueSender sender = null;
startMillis = System.currentTimeMillis();
for (int i = 0; i < messagesToSend; i++) {
sender = session.createSender(this.queue);
sender.send(this.createMessage(session, messageSizeBytes));
messagesSend++;
endMillis = System.currentTimeMillis();
return new Throughput(startMillis, endMillis, messagesSend);
private Throughput
bulkSendMessage(
QueueSession session,
QueueSender sender,
int messagesToSend,
int messageSizeBytes)
throws Exception {
int messagesSend = 0;
long startMillis = 0L;
long endMillis = 0L;
startMillis = System.currentTimeMillis();
for (int i = 0; i < messagesToSend; i++) {
sender.send(this.createMessage(session, messageSizeBytes));
messagesSend++;
endMillis = System.currentTimeMillis();
return new Throughput(startMillis, endMillis, messagesSend);
private Message
createMessage(
Session session,
int messageSizeBytes)
throws Exception {
BytesMessage message = null;
message = session.createBytesMessage();
message.writeBytes(new byte[messageSizeBytes]);
return message;
private void cleanupQueue() throws Exception {
QueueConnection con = null;
QueueSession session = null;
QueueReceiver receiver = null;
Message message = null;
int messageCount = 0;
try {
con = this.conFactory.createQueueConnection();
session =
con.createQueueSession(false, QueueSession.AUTO_ACKNOWLEDGE);
receiver = session.createReceiver(this.queue);
con.start();
do {
message = null;
message = receiver.receiveNoWait();
if (message != null) {
messageCount++;
} while (message != null);
} finally {
if (con != null) {
try {
con.close();
} catch (JMSException e) {}
System.out.println("Cleaned up <" + messageCount + "> messages.");
private static final class Throughput {
private final long startMillis;
private final long endMillis;
private final int messagesSend;
public Throughput(long startMillis, long endMillis, int messagesSend) {
this.startMillis = startMillis;
this.endMillis = endMillis;
this.messagesSend = messagesSend;
public int value() {
long timeElapsedMillis = 0L;
int timeElapsedSeconds = 0;
int value = 0;
timeElapsedMillis = this.endMillis - this.startMillis;
if (timeElapsedMillis == 0) {
timeElapsedMillis = 1;
value = (int) ((this.messagesSend * 1000L) / timeElapsedMillis);
return value;
public String toString() {
StringBuffer buffer = new StringBuffer();
buffer
.append("Throughput (messages/second): ").append(this.value())
.append(" [startMillis=").append(this.startMillis)
.append(";endMillis=").append(this.endMillis)
.append(";messagesSend=").append(this.messagesSend)
.append("]");
return buffer.toString();
</pre>
The (partial) server configuration:
<pre>
<JMSConnectionFactory
DefaultDeliveryMode="Non-Persistent"
FlowMaximum="50"
FlowMinimum="1"
FlowSteps="6"
JNDIName="jms/factory/TestConnectionFactory"
Name="TestConnection Factory"
Targets="SchufaDev"
XAConnectionFactoryEnabled="true"/>
<JMSFileStore Directory="filestore/paging" Name="TestPagingStore"/>
<JMSServer
MessagesPagingEnabled="true"
MessagesThresholdHigh="1000"
MessagesThresholdLow="100"
Name="Test_JMSServer"
PagingStore="TestPagingStore"
Targets="SchufaDev">
<JMSQueue
CreationTime="1151395702234"
JNDIName="jms/queue/TestQueue"
JNDINameReplicated="false"
Name="TestQueue"
RedeliveryDelayOverride="5000"
RedeliveryLimit="5"
StoreEnabled="false"/>
</JMSServer>
</pre>
Similar Messages
-
How to stop/start SAP XI Message flow in controlled way?
Hi All,
I am facing a scenario where for maintenance activity I need to stop all message flow in XI, system should be up and running but no message should processed by XI. I also don't want to shut down system.
Is there any way by which I can stop message coming to XI?
I don't want to deactivate communication channel..
Regards,
GouravHi,
maybe (just an idea) you can try to deregister all queues?
raport : RSXMB_REGISTER_QUEUES
then all the queues should stop but I haven't checked it
so you'd have to do some tests and find out if this
does not have any other negative impact of some other
XI processes
Regards,
michal
<a href="/people/michal.krawczyk2/blog/2005/06/28/xipi-faq-frequently-asked-questions">XI FAQ - Frequently Asked Questions</a> -
How to return "HTTP/1.0 401 Authorization Required" from OSB's Message Flow
How can I return "HTTP/1.0 401 Authorization Required" header from OSB's Message Flow?
Using of "HTTP Transport -> Authentification" is not possible, because I need flow condition. Transports Headers activity from design palette doesn't allow to send such headers.
Practical usage: request for kerberos ticket by sending two headers: 401 and WWW-Authenticate: Negotiate...Can you briefly expand the use case for better understanding?
HTTP Client---> Hand Shakes or what ever ----> HTTP Proxy (OSB )---> Pipeline----
Philosophy behind pipeline is that it is designed to work on the request. Correct me if I'm wrong.
What you are asking is ability to control the hand shake either in Pipeline or some way during proxy configuration. Unfortunately there is no configuration that is exposed for HTTP proxies in OSB to control that behavior.
Manoj -
ORA-25307: Enqueue rate too high, flow control enabled
I am stuck. I have my stream setup and they were previously working on two of my dev environments well. Now when I get the streams setup the CAPTURE process has a state of "CAPTURING CHANGES" for like 10 seconds and then changes to state "PAUSED FOR FLOW CONTROL". I believe this is happening because the PROPAGATION process is showing an error of "ORA-25307: Enqueue rate too high, flow control enabled".
I don't know what to tweak to get rid of this error message. The two environments are dev databases and there is minimal activity on them so i don't think it's a case of the APPLY process is lagging behind the PROPAGATION process. Has anyone run into this issue?? I've verified my db link works, my stream admin user has dba access. Any help or advise would be greatly appreciated.
thanks, daveAs rule of thumb, you don't need to set GLOBAL_NAME=TRUE as long as your are 100% GLOBAL_NAME compliant.
So, setting GLOBAL_NAME=TRUE will not have any effect if your dblink is not global_name compliant
and if your installation is global_name compliant, you don't need to set GLOBAL_NAME=TRUE.
The first thing when you diagnose is to get the exact facts.
Please run this queries both on source and target so that to see what are in the queues and where.
Run it multiple time to see if figures evolves.
- If they are fixed, then your Streams is stuck in its last stage. As a cheap and good starting point, just stop/start the capture, propagation and target apply process. Check also the alert.log on both site. when you have a propagation problem, they do contains information's. If you have re-bounced everything and no improvement then the real diagnose work must start here but then we know that the message is wrong and the problems is elsewhere.
- if they are not fixed then your apply really lag behind for what ever good reason, but this is usually easy to find.
set termout off
col version new_value version noprint
col queue_table format A26 head 'Queue Table'
col queue_name format A32 head 'Queue Name'
select substr(version,1,instr(version,'.',1)-1) version from v$instance;
col mysql new_value mysql noprint
col primary_instance format 9999 head 'Prim|inst'
col secondary_instance format 9999 head 'Sec|inst'
col owner_instance format 99 head 'Own|inst'
COLUMN MEM_MSG HEADING 'Messages|in Memory' FORMAT 99999999
COLUMN SPILL_MSGS HEADING 'Messages|Spilled' FORMAT 99999999
COLUMN NUM_MSGS HEADING 'Total Messages|in Buffered Queue' FORMAT 99999999
set linesize 150
select case
when &version=9 then ' distinct a.QID, a.owner||''.''||a.name nam, a.queue_table,
decode(a.queue_type,''NORMAL_QUEUE'',''NORMAL'', ''EXCEPTION_QUEUE'',''EXCEPTION'',a.queue_type) qt,
trim(a.enqueue_enabled) enq, trim(a.dequeue_enabled) deq, x.bufqm_nmsg msg, b.recipients
from dba_queues a , sys.v_$bufqm x, dba_queue_tables b
where
a.qid = x.bufqm_qid (+) and a.owner not like ''SYS%''
and a.queue_table = b.queue_table (+)
and a.name not like ''%_E'' '
when &version=10 then ' a.owner||''.''|| a.name nam, a.queue_table,
decode(a.queue_type,''NORMAL_QUEUE'',''NORMAL'', ''EXCEPTION_QUEUE'',''EXCEPTION'',a.queue_type) qt,
trim(a.enqueue_enabled) enq, trim(a.dequeue_enabled) deq, (NUM_MSGS - SPILL_MSGS) MEM_MSG, spill_msgs, x.num_msgs msg,
x.INST_ID owner_instance
from dba_queues a , sys.gv_$buffered_queues x
where
a.qid = x.queue_id (+) and a.owner not in ( ''SYS'',''SYSTEM'',''WMSYS'') order by a.owner ,qt desc'
end mysql
from dual
set termout on
select &mysql
/B. Polarski -
Message flow between advanced adapter engine and messaging system for ICO scenarios
Dear all,
I'm working on a PI 7.31 AEX box and created an ICO object for one interface with HTTP_AAE2IDoc scenario. The interface works quite well. When I looked in to message log of messages for this interface in PI monitor, I noticed that the internal XI message are put totally 5 times into the send queue and retrieved from send queue. In some steps I only see after retrieving a message from send queue and immediately put it back into send queue. Can someone please kindly explain the message flow between advanced adapter engine and messaging system and what exactly happens after each retrieving a message from send queue?
Below is an example of message log for one message:
12/08/2014 09:26:06.472 Information MP: processing local module localejbs/CallSapAdapter
12/08/2014 09:26:06.472 Information Application attempting to send an XI message asynchronously using connection HTTP_AAE_http://sap.com/xi/XI/System
12/08/2014 09:26:06.478 Information Trying to put the message into the send queue
12/08/2014 09:26:06.499 Information Message successfully put into the queue
12/08/2014 09:26:06.499 Information The message was successfully retrieved from the send queue
12/08/2014 09:26:06.499 Information The application sent the message asynchronously using connection HTTP_AAE_http://sap.com/xi/XI/System. Returning to application
12/08/2014 09:26:06.500 Information HTTP adapter successfully processed interface PlantResponse_Out
12/08/2014 09:26:06.501 Information Trying to put the message into the send queue
12/08/2014 09:26:06.501 Information Message status set to DLNG
12/08/2014 09:26:06.513 Information Message successfully put into the queue
12/08/2014 09:26:06.513 Information The message was successfully retrieved from the send queue
12/08/2014 09:26:06.515 Information Message status set to DLNG
12/08/2014 09:26:06.533 Information Trying to put the message into the send queue
12/08/2014 09:26:06.548 Information Message successfully put into the queue
12/08/2014 09:26:06.548 Information The message was successfully retrieved from the send queue
12/08/2014 09:26:06.550 Information Message status set to DLNG
12/08/2014 09:26:06.551 Information Executing Request Mapping "http://styrolution.com/pi/Integration/PlantMaintenance/PlantResponse/PlantResponse_to_Zcol_Basf_Inotif02_Inotif01_Zeupm_Inotif01_Ludwigshafen" (SWCV 085d2320fb3b11e2cc0bf4d50aea8c33)
12/08/2014 09:26:06.563 Information Trying to put the message into the send queue
12/08/2014 09:26:06.571 Information Message successfully put into the queue
12/08/2014 09:26:06.571 Information The message was successfully retrieved from the send queue
12/08/2014 09:26:06.573 Information Trying to put the message into the send queue
12/08/2014 09:26:06.573 Information Message status set to DLNG
12/08/2014 09:26:06.580 Information Message successfully put into the queue
12/08/2014 09:26:06.580 Information The message was successfully retrieved from the send queue
12/08/2014 09:26:06.582 Information Message status set to DLNG
12/08/2014 09:26:06.583 Information Delivering to channel: IDOC_R
12/08/2014 09:26:06.583 Information MP: processing local module localejbs/IDocOutboundModuleBean
12/08/2014 09:26:06.583 Information XI message received for processing
12/08/2014 09:26:06.587 Information Sender Party: Sender Service:SXX Receiver Party: Receiver Service:RXXCLNT200 Communication Channel:IDOC_R
12/08/2014 09:26:06.588 Information IDOC metadata repository is RXX
12/08/2014 09:26:06.589 Information Control record is not mandatory - control record will be added if not available
12/08/2014 09:26:06.590 Information XML Payload parsed to idoc document list with number of idocs: 1
12/08/2014 09:26:06.595 Information Sending idoc message to receiver R/3 system with TID XIh{lsRI824UITC0009OalmW
12/08/2014 09:26:06.813 Information IDOC message sent to receiver R/3 system
12/08/2014 09:26:06.817 Information TID XIh{lsRI824UITC0009OalmW confirmed
12/08/2014 09:26:06.819 Information Message was successfully transmitted to endpoint <local> using connection HTTP_AAE_http://sap.com/xi/XI/System
12/08/2014 09:26:06.821 Information Message status set to DLVD
Thanks & regards
DingjunHello All,
Thanks for the prompt responses and with best information, But apart from this,I need how an adapter(File/JDBC) works along
with AAE in PI 7.1. When does the job of File/JDBC adapter is completed and resumed in a synchronous case. That is,
File Location --> file adapter -
> XI(AAE) --> JDBC adapter --> database.
In file sender, lets suppose we have synchronous settings(Best Effort). Now when File adapter's job is finished and when it
gets back the response back from XI. Please explain step by step from starting(file adapter polling the location) to getting the response coming back to XI.
Regards,
Achari. -
Paused for Flow Control but no flow occurring
10.2.0.2
Our destination database had problems this AM and it was bounced. The capture process on the source went into "Paused for Flow Control" status and never recovered. Here's the process I went through.
1. There was nothing being propagated according to v$propagation_sender.
2. The apply process was running but was not receiving any messages according to v$streams_apply_reader, v$streams_apply_server
3. I stopped and restarted the apply process - no change.
4. I stopped and restarted the capture process and after the dictionary initilization it went back into the paused state.
5. alter logs showed nothing for either database.
6. dbms_propagation_adm.stop_propagation resulted in an ORA-24082
I finally had to run dbms_propagation_adm.stop_propagation with force=>true and restart it for data to start flowing again, albeit slowly.
So the question is - why? Why did I have to forcefully stop the propagation process and restart it when this is all supposed to be seamless? Is this expected behavior that others have run into and the proces you need to perform whenever your destination becomes unavailable for a time period?
Just curious.
Thanks - BrianI've tried setting up a Streams for schema replication and have run into the "Paused for Flow Control issue". I'm not getting any streams errors so i don't know what's wrong with it.
I'm not that familiar with Streams so i'm not sure where to start to diagnose the problem. I used the Enterprise Manager to set up the streams and tried stopping and restarting the capture process but i'm still getting the "Paused for Flow Control issue". Where is the best place to start to look for a solution?
Thanks! -
Increase of priority flow control counters in a FCoE environment
Hi,
I need some input about what is normal in a FCoE environment in regards to priority flow contol counters.
I see Increase of RxPPP and TxPPP counters on a FCoE end to end enviroment. however we don't see high traffic rates to/from storage array(<1Gbps). Customer have not reported low transfer from storage.
Setup:
CNA hosts - FEX2232 - N5K - EMC-VNX
FCoE end-to-end, No native FibreChannel.
CNA adapters = Emulex.
Is a problem I should look further into or is it normal?
I have read the troubleshooting guide.
http://www.cisco.com/en/US/partner/docs/switches/datacenter/nexus5000/sw/troubleshooting/guide/n5K_ts_fcoe.html
some output:
N5K-2# sh inter priority-flow-control
============================================================
Port Mode Oper(VL bmap) RxPPP TxPPP
============================================================
FEX101-2232 1-8
Ethernet1/1 Auto Off 0 211994
Ethernet1/2 Auto Off 0 0
Ethernet1/3 Auto Off 2891830 0
Ethernet1/4 Auto Off 6269410 0
Ethernet1/5 Auto Off 12109662 0
Ethernet1/6 Auto Off 79534 0
Ethernet1/7 Auto Off 0 0
Ethernet1/8 Auto Off 0 0
FEX102-2232 9-16
Ethernet1/9 Auto Off 0 9994780
Ethernet1/10 Auto Off 0 0
Ethernet1/11 Auto Off 24678 0
Ethernet1/12 Auto Off 0 0
Ethernet1/13 Auto Off 4316 0
Ethernet1/14 Auto Off 136 0
Ethernet1/15 Auto Off 0 0
Ethernet1/16 Auto Off 0 0
!VNX-FCOE-ATTACHED SP_A
Ethernet1/19 Auto On (8) 1888566 10100200
!VNX-FCOE-ATTACHED SP_A
Ethernet1/20 Auto On (8) 10414603 1367098
Ethernet1/23 Auto Off 0 0
Ethernet1/24 Auto Off 0 0
Ethernet1/25 Auto Off 0 0
Ethernet1/26 Auto Off 0 0
Ethernet1/27 Auto Off 0 0
Ethernet1/28 Auto Off 0 0
Ethernet1/30 Auto Off 0 0
Ethernet1/32 Auto On (8) 0 0
Ethernet1/38 Auto Off 0 0
Ethernet1/39 Auto Off 0 0
Ethernet1/40 Auto Off 0 0
Ethernet1/41 Auto On (8) 0 0
Ethernet1/42 Auto On (8) 0 0
Ethernet1/43 Auto On (8) 0 0
Ethernet1/44 Auto On (8) 0 0
!CNA atttached hosts.
Ethernet101/1/1 Auto On (8) 37109 33155
Ethernet101/1/2 Auto On (8) 120 32336
Ethernet101/1/3 Auto On (8) 274 34404
Ethernet101/1/4 Auto On (8) 1924 64754
Ethernet101/1/5 Auto On (8) 144 14684
Ethernet101/1/24 Auto On (8) 4296788 4466
Ethernet101/1/25 Auto On (8) 104520 22
Ethernet101/1/26 Auto On (8) 838 30824
Ethernet101/1/27 Auto On (8) 796 7770
Ethernet101/1/28 Auto On (8) 13749152 1684
Ethernet101/1/29 Auto On (8) 5912918 1276
Ethernet101/1/30 Auto On (8) 3296026 2292
Ethernet101/1/31 Auto On (8) 0 80
Ethernet101/1/32 Auto On (8) 0 0
Ethernet102/1/1 Auto On (8) 75656 323512
Ethernet102/1/2 Auto On (8) 0 5632
Ethernet102/1/3 Auto On (8) 4278 173828
Ethernet102/1/4 Auto On (8) 0 0
Ethernet102/1/28 Auto On (8) 2872 300046
Ethernet102/1/29 Auto On (8) 28216 11808124
Ethernet102/1/30 Auto On (8) 4792 441340
Ethernet102/1/31 Auto On (8) 0 0
Ethernet102/1/32 Auto On (8) 1040 201214
Ethernet1/19 Auto On (8) 1888566 10100200
Ethernet1/20 Auto On (8) 10414603 1367098
Just a one of the servers
GDC-CORE-SW04# sh inter e101/1/29 priority-flow-control
============================================================
Port Mode Oper(VL bmap) RxPPP TxPPP
============================================================
Ethernet101/1/29 Auto On (8) 5912932 1276
GDC-CORE-SW04# sh inter e101/1/29 | in pause
0 Rx pause
0 Tx pause
GDC-CORE-SW04# sh inter e101/1/29 priority-flow-control
============================================================
Port Mode Oper(VL bmap) RxPPP TxPPP
============================================================
Ethernet101/1/29 Auto On (8) 5913378 1276
GDC-CORE-SW04#
GDC-CORE-SW04# sh inter e101/1/29 | in pause
0 Rx pause
0 Tx pause
VNX
GDC-CORE-SW04# sh inter priority-flow-control | in Ethernet1/19 ne 1
Ethernet1/19 Auto On (8) 1889064 10100536
Ethernet1/20 Auto On (8) 10414603 1367164
GDC-CORE-SW04# sh inter e1/19 | in "input rate"
30 seconds input rate 133346744 bits/sec, 16668343 bytes/sec, 10762 packets/sec
input rate 96.22 Mbps, 8.31 Kpps; output rate 118.68 Mbps, 8.83 Kpps
GDC-CORE-SW04# sh inter e1/20 | in "input rate"
30 seconds input rate 36024752 bits/sec, 4503094 bytes/sec, 2342 packets/sec
input rate 33.96 Mbps, 2.09 Kpps; output rate 24.95 Mbps, 1.50 KppsHi, thank your for your answer.
I actually already enabled the system qos manually since we run 5.0(2)N2 release.
We will implement FCoE over 5500. What I'm worried about is the warning message I posted above on Nexus 7009s connected to my 5500s after I enabled the system qos.
Could it be originated by the DCBX feature? May I have some problem if 'Priority-flow-control' setting between N5k and N7k don't match? -
Hi all,
I have an order with 5 line items, and all are from same plant. When i try to change some thing for line item 5 system is saying that " No status object is missing for SDI xxxxx/50, where as xxxxx is a sales order number and 50 is line item.
Then again i click on object status on item level status tab, it is giving a message that " Flow control: Entry SAPMV45B, PSTC, P1, * , * , * is missing in T185".
What i have missed here?
item category for all the items is same, and are of same material types. But this message i am getting only for 5 line item.
Any help is appreciated.
Venkat CheedllaHi,
SAP suggested to run the program SDSTATU2 program.
But i did not got a chance to check it.
Venkat -
Debugging - Process flow control
Hi All,
I am doing initial load for one condition object(R3AS), and when I check SMW01 I am getting BDoc validation Error.
I want to debug the BDoc flow context i.e MI0(validation function module) where Bdoc posting is failing.
I followed OSS note- 432661- Debugging and process support of flow control: Enhancement
Here is the Note:
Symptom
Error analysis requires debugging flow control services.
Other terms
SMW01, Flow Control, BDOC, BDoc, BDoc Message, Flow Service, Update task, qRFC step, asynchronous step
Reason and Prerequisites
Error analysis requires debugging flow control services.
Solution
This feature is available with CRM 3.0 starting SP04 and higher releases.
Usage:
The flow header structure SMW3_FHD is extended to hold a flag indicating debug mode. To debug, set this flag before calling CL_SMW_MFLOW=> PROCESS_OUTBOUND (Parameter IN_HEADER, Field DBGMODE), PROCESS_NOTIFICATION (Parameter HEADER, Field DBGMODE) or PROCESS_NOTIFICATION_MULT (Parameter HEADER, Field DBGMODE). If update task and/or asynchronous tRFC/qRFC step is done, the message is not written into a qRFC queue or tRFC. Instead the message get's a new state 'D01': To be processed (Debug).
The message processing can then be continued from transaction SMW01.
Select messages in state D01 possibly with bdoc type, send date, creation time, and user.
In the list display check the message check box that you want to debug.
Choose function Retry to process.
The message will be processed by flow service function modules in the order shown in transaction SMO8FD. Processing occurs directly. Therefore all active breakpoints can be used to stop processing for further analysis.
I set HEADER-DBGMODE = X, and passed this structure to CL_SMW_MFLOW=> PROCESS_OUTBOUND
But none of the message is set to D01. Anyone have idea where I am missing?
I basically want to debug this validation function module while Bdoc comes in CRM, Any other way other than this OSS note..?
Thanks,
Vijay Rahejawhat the description of the error?
Give details. Just by saying bdoc validation error does not nelp.
Click on the error details icon and see wat it says.
let us know then only can we help
Julius -
Streams Help - Stuck in PAUSED FOR FLOW CONTROL
Hi All,
I am brand new to Streams and i'm trying to configure streams between two db's on different machines on the same network. Initially i was getting errors trying to connect to the remote database during Propagation(ORA-02019 connection description for remote database not found ). I think this was due to my db link being created incorrectly. I recreated my db link and i'm no longer getting those messages.
Now everything on my Source db looks like it's running except the Capture state is stuck in PAUSED FOR FLOW CONTROL and nothing is being propagated. The propagation process is enabled and i can see it in the dba_jobs views. I have never gotten this working yet.
Does anyone have general troublshooting tips for this. I have found detailed instructions on how to setup the stream but not much on how to troubleshoot.
Any advise would be greatly appreciated.
nullThis error was due to a 'bad' database link. I'm still not positive why the link was bad but i recreated my db link and tested. After i confirmed it was active I re-setup my capture and propagation processes and all is good now.
thanks, dave -
WL 8.1 - JMS Flow Control: How does it work
I have been reading the documenattion on the way weblogic has its Flow
Control setup. However I still have a few doubts. It would be great
if some one can help.
Background: I have a J2EE application deployed on the weblogic server
(8.1 sp5) which connects as a Consumer to a Topic. On the other side I
have a plain java application that acts as a producer and sends lots
of small messages (about 300 bytes) out to the topic using
MessageProducer.send() method.
I would like to restrict the flow from this producer so that it waits
if the consumers are unable to collect all messages from the topic.
When I enable flow control, I can see log entries in my weblogic
application that shows that it has beocme armed but it clears off the
same second. However, I don't see any exceptions being raised at the
producer side. How can I ensure that the producer is waiting x ms to
send further messages across. I can't see anything at the producer
side that would lead me to believe that the flow control is working. I
also checked the properties for each of teh Session, Connection and
COnnectionFactory attributes but could not come across any way where I
could see that the producer knows about the quotas being implemented
on the queue.
Can someone throw some light?
Thanks
VikashHi,
Except for the threshold log messages you mention, flow control is silent: no exceptions are thrown when a producer is flow controlled. Flow control simply slows down "send()" calls. You can control how long a flow controlled send() call will take via the connection factory settings. I suppose you can instrument your code to time the send() calls.
Your statement "When I enable flow control, I can see log entries in my weblogic application that shows that it has beocme armed but it clears off the same second." is likely an indicator that flow control is working. You need to configure your thresholds to be farther apart if you want the flow control condition to last longer, and if you want to reduce the number of transitions in and out of flow-control.
Tom
P.S. The threshold settings in 8.1 also control paging. If you upgrade to a new version, then the threshold settings will only control flow-control. You will also likely get much much higher messaging performance - which can reduce the need for flow control. -
With no flow control on the console port, it's common to overrun the port when sending large config files from a terminal emulator. Is there any way to avoid this, other than manually breaking up the file and sending a chunk at a time, maybe by adjusting the console buffer size, if possible?
Michael
Most terminal emulator programs (like Hyperterm, or TeraTerm, or SecurCRT, etc) have a setting where you can specify character delay and or line delay. If you use these parameters to specify some delay you can send the config file (even very large configs) without over-running the console.
HTH
Rick -
BDOC message flow and its architecture
Hi Expert,
It can be a simple question but i have a doubt regarding the flow of messages using SAP CRM middleware.
The scenario is like:
1. Message flows from ECC to CRM through a BDoc. (It can be opposite way also)
2. The BDoc fails in CRM due to some data issue.
3. A BDoc message id is generated.
4.Now the data is corrected in ECC and initial load was triggered.
5.The messages are flowing correctly.
So my doubt is:
1.What will happen to the old BDoc?
2. Do the initial or delta load processes the messages with new BDoc ID or through the old BDoc ID?
3. If the messages are processed through new BDoc id, can the old BDocs be deleted?
Please help me understand this concepts of BDocs and please provide me to some study material to get more undertsanding of the BDOC message flow architecture.
thanks,
VickyHello Vicky,
i think I understand exactly what your confusion is all about.
1.What will happen to the old BDoc?
The old Bdoc will remain in error state until it is archived or set to processed state.
2. Do the initial or delta load processes the messages with new BDoc ID or through the old BDoc ID?
It will be a separate BDoc with a new BDocId. If you get an Error in SMW01 this is beyond the queueing, so later Messages will not get queued behind your faulty bdoc. They will also not "update" your BDoc in any way. Later BDocs will Bypass a bdoc in error state and update your object in CRM if the error in data has been solved in ERP before. If the data error is not corrected, you will get a second failed bdoc.
3. If the messages are processed through new BDoc id, can the old BDocs be deleted?
Best practise for the Bdoc with error would be to set it to processed state. That way there is no way that Bdoc can be processed afterwards. The BDoc will then be archived with the next run.
Best regards,
Lutz -
Goods Receipt in PO AND Message Flow Update in Inb. Delivery using WMMBXY
Dear All
This question is related to a previous one posted in:
Post Goods Receipt for Inbound Delivery using WHSCON IDoc
We have a stock transport order (PO) for which we create an inbound delivery. The despatch advice (EANCOM D96A DESADV) is sent to our logistics partner who returns the same EDI message with the received quantities (goods receipt).
Using the inbound IDoc WMMBID02.WMMBXY I have successfully posted the goods receipt for the original PO. However, the message flow in the delivery is not updated. When we post the goods receipt (transaction MIGO) in dialog for the delivery we see the GR in the message flow.
I have used the following values with the segments of WMMBID02.WMMBXY (SAP release = 4.6c):
E1MBXYH:
Reference = <number of delivery>
Transaction code = 'MIGO'
E1MBXYI:
Movement type = '101'
Purchasing doc. = <number of PO>
Item = <Item no. in PO>
Movement ind. = 'B'
I am not sure about the correct movement indicator but failed when using a value different from 'B':
The movement indicator is derived from the transaction code.
Permitted values:
'' Goods movement w/o reference
'B' Goods movement for purchase order
'F' Goods movement for production order
'L' Goods movement for delivery note
'K' Goods movement for kanban requirement (WM - internal only)
'O' Subsequent adjustment of "material-provided" consumption
'W' Subsequent adjustment of proportion/product unit material
QUESTION: Does anybody know if and how inbound WMMBID02.WMMBXY can be used for both the goods receipt in the purchase order AND the message flow in the inbound delivery?
Regards
UweHello Everybody
My initial mapping of the WMMBXY IDoc proved to be correct.
For more details please refer to:
[Note 833603 - EDI: Goods receipt for stock transport order|https://service.sap.com/sap/support/notes/833603]
Regards
Uwe -
ON PREM Outbound emails showing in dummy non-configured office 365 account message flow trace
Dear Community,
We have an on-prem exchange 2013 server and an office 365 account which is completly standalone.
Whilst the office 365 account is standalone, it does feature the email address we use for on-prem (Ie. the domain name in office 365 account is not active for any office 365 services however has passed ownership verification thus it's just sitting there)
We DON'T use EOP nor do we have any connector rules on our on-prem system that go to office 365 however when I randomly went into the 'Message Flow Trace' section in our office 365 account, there is recorded outbound mail which was sent from our On-prem
server.
The ONLY mail that was recorded in the message Trace in Office 365 was emails we had sent from On-prem to other office 365 accounts (For example btconnect.com, and some of our clients whom also use office 365) .
How is office 365 picking up mail we've sent from our On-Prem server? Is there integration out of the box in exchange 2013 which auto interfaces with office 365? What on earth has happened here?
I'm really confused.
-------- For troubleshooting purposes...
Headers in the email which arrived in my personal office 365 account from the ON-PREM SERVER
Received: from AMSPR05MB065.eurprd05.prod.outlook.com (10.242.89.142) by
DBXPR05MB079.eurprd05.prod.outlook.com (10.242.138.22) with Microsoft SMTP
Server (TLS) id 15.1.93.16 via Mailbox Transport; Thu, 5 Mar 2015 16:16:31
+0000
Received: from DBXPR05CA0014.eurprd05.prod.outlook.com (10.255.178.14) by
AMSPR05MB065.eurprd05.prod.outlook.com (10.242.89.142) with Microsoft SMTP
Server (TLS) id 15.1.99.14; Thu, 5 Mar 2015 16:16:30 +0000
Received: from DB3FFO11FD028.protection.gbl (2a01:111:f400:7e04::145) by
DBXPR05CA0014.outlook.office365.com (2a01:111:e400:9434::14) with Microsoft
SMTP Server (TLS) id 15.1.106.15 via Frontend Transport; Thu, 5 Mar 2015
16:16:29 +0000
Received: from emea01-am1-obe.outbound.protection.outlook.com (157.56.112.128)
by DB3FFO11FD028.mail.protection.outlook.com (10.47.217.59) with Microsoft
SMTP Server (TLS) id 15.1.99.6 via Frontend Transport; Thu, 5 Mar 2015
16:16:28 +0000
Received: from DB4PR04CA0010.eurprd04.prod.outlook.com (25.160.41.20) by
DB3PR04MB236.eurprd04.prod.outlook.com (10.242.130.24) with Microsoft SMTP
Server (TLS) id 15.1.99.14; Thu, 5 Mar 2015 16:16:26 +0000
Received: from DB3FFO11FD040.protection.gbl (2a01:111:f400:7e04::184) by
DB4PR04CA0010.outlook.office365.com (2a01:111:e400:9852::20) with Microsoft
SMTP Server (TLS) id 15.1.106.15 via Frontend Transport; Thu, 5 Mar 2015
16:16:26 +0000
Received: from mail.localdomainhere (<IP OF OUR ON-PREM SERVER GOES HERE>) by
DB3FFO11FD040.mail.protection.outlook.com (10.47.217.71) with Microsoft SMTP
Server (TLS) id 15.1.99.6 via Frontend Transport; Thu, 5 Mar 2015 16:16:25
+0000
Received: from INT-EX-01.localdomainhere (192.168.142.20) by
INT-EX-01.localdomainhere (192.168.142.20) with Microsoft SMTP Server (TLS) id
15.0.913.22; Thu, 5 Mar 2015 16:15:55 +0000
Received: from INT-EX-01.localdomainhere ([fe80::aca4:88cf:3eaf:57dc]) by
INT-EX-01.localdomainhere ([fe80::aca4:88cf:3eaf:57dc%12]) with mapi id
15.00.0913.011; Thu, 5 Mar 2015 16:15:55 +0000
From: Jake Ives <[email protected]>
To: Jake Ives <[email protected]>
Subject: Test01
Thread-Topic: Test01
Thread-Index: AdBXX6dyI5u99OGoSKmXroKKyMA3Tg==
Date: Thu, 5 Mar 2015 16:15:54 +0000
Message-ID: <[email protected]>
Accept-Language: en-US, en-GB
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-originating-ip: [192.168.142.73]
Content-Type: multipart/related;
boundary="_004_081f834d85b7436193fa887613b9dac7INTEX01localdomainhere_";
type="multipart/alternative"
MIME-Version: 1.0
Return-Path:
[email protected]
X-EOPAttributedMessage: 1
Received-SPF: Pass (protection.outlook.com: domain of domain.com
designates <IP OF ONPREM SERVER HERE> as permitted sender)
receiver=protection.outlook.com; client-ip=<IP OF OUR ON-PREM SERVER GOES HERE;
helo=mail.domain.co.uk;
Authentication-Results: spf=pass (sender IP is <IP OF OUR ON-PREM SERVER GOES HERE>)
[email protected]; ives.gb.net; dkim=none (message not
signed) header.d=none;ives.gb.net; dkim=none (message not signed)
header.d=none;ives.gb.net; dmarc=none action=none header.from=domain.com;
X-Forefront-Antispam-Report-Untrusted: CIP:<IP OF ON PREM SERVER HERE>;CTRY:GB;IPV:NLI;EFV:NLI;BMV:0;SFV:NSPM;SFS:(10019020)(438002)(189002)(199003)(71364002)(87936001)(2656002)(98436002)(92726002)(102836002)(108616004)(19625215002)(19618635001)(512954002)(92566002)(229853001)(107886001)(66926002)(18206015028)(84326002)(16796002)(19300405004)(450100001)(19580395003)(2900100001)(77156002)(15974865002)(62966003)(5250100002)(5310100001)(99936001)(15395725005)(16236675004)(110136001)(17760045003)(67866002)(86362001)(19617315012)(19627595001)(15975445007)(19580405001)(54356999)(22756005)(50986999)(6806004)(46102003)(74482002)(106466001)(33646002)(7099025)(24736002)(15669805003);DIR:OUT;SFP:1102;SCL:1;SRVR:DB3PR04MB236;H:mail.domain.co.uk;FPR:;SPF:Pass;MLV:ovrnspm;MX:1;A:1;PTR:mail.domain.co.uk;LANG:en;
X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:;SRVR:DB3PR04MB236;UriScan:;BCL:0;PCL:0;RULEID:;SRVR:AMSPR05MB065;
X-Microsoft-Antispam-PRVS: <[email protected]outlook.com>
X-Exchange-Antispam-Report-Test: UriScan:;UriScan:;
X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(601004)(5001007)(5005006);SRVR:DB3PR04MB236;BCL:0;PCL:0;RULEID:;SRVR:DB3PR04MB236;BCL:0;PCL:0;RULEID:(601004);SRVR:AMSPR05MB065;BCL:0;PCL:0;RULEID:;SRVR:AMSPR05MB065;
X-Forefront-PRVS: 05066DEDBB
X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB3PR04MB236
X-MS-Exchange-Organization-MessageDirectionality: Incoming
Received-SPF: Fail (protection.outlook.com: domain of domain.com does not
designate 157.56.112.128 as permitted sender)
receiver=protection.outlook.com; client-ip=157.56.112.128;
helo=emea01-am1-obe.outbound.protection.outlook.com;
Authentication-Results: spf=fail (sender IP is 157.56.112.128)
[email protected];
X-Forefront-Antispam-Report: CIP:157.56.112.128;CTRY:US;IPV:NLI;IPV:NLI;EFV:NLI;SFV:NSPM;SFS:(339900001)(489007)(189002)(71364002)(199003)(102836002)(92726002)(15975445007)(92566002)(17760045003)(62966003)(106466001)(15395725005)(16236675004)(77156002)(110136001)(107886001)(450100001)(5310100001)(229853001)(22756005)(98436002)(2900100001)(5250100002)(19625215002)(66926002)(99936001)(33646002)(15974865002)(19617315012)(19627595001)(67866002)(54356999)(108616004)(19300405004)(19618635001)(87836001)(2656002)(18206015028)(85426001)(512954002)(86362001)(6806004)(46102003)(74482002)(84326002)(19580395003)(50986999)(19580405001)(7099025)(24736002)(15669805003);DIR:INB;SFP:;SCL:1;SRVR:AMSPR05MB065;H:emea01-am1-obe.outbound.protection.outlook.com;FPR:;SPF:Fail;MLV:ovrnspm;MX:1;A:1;PTR:mail-am1on0128.outbound.protection.outlook.com;LANG:en;
X-MS-Exchange-Transport-CrossTenantHeadersStripped: DB3FFO11FD028.protection.gbl
X-MS-Exchange-Transport-CrossTenantHeadersPromoted: DB3FFO11FD028.protection.gbl
X-MS-Exchange-Organization-Network-Message-Id: 927151e3-02c4-4c46-5539-08d22576df82
X-MS-Exchange-Organization-AVStamp-Service: 1.0
X-MS-Exchange-Organization-SCL: 1
X-MS-Exchange-CrossTenant-OriginalArrivalTime: 05 Mar 2015 16:16:28.9728
(UTC)
X-MS-Exchange-CrossTenant-Id: cd52bfe2-da2e-446d-b8f1-e78db861d489
X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=bfa61dad-1543-4f3b-8075-03498e9f4fcb;Ip=[IP OF ON PREM SERVER HERE]
X-MS-Exchange-CrossTenant-FromEntityHeader: Internet
X-MS-Exchange-Transport-CrossTenantHeadersStamped: AMSPR05MB065
X-MS-Exchange-Organization-AuthSource: DB3FFO11FD028.protection.gbl
X-MS-Exchange-Organization-AuthAs: Anonymous
X-MS-Exchange-Transport-EndToEndLatency: 00:00:03.5565465MX records are not set to office 365, the MX is pointing directly to the on-prem exchange server.
The problem is; Office 365 Mail Delivery Trace is displaying mail we've sent via our On-Prem server - We are having trouble understanding why this is happening.
To clarify, the message tracer in Office 365 is displaying outbound mail (Which for example, a user has sent out from their outlook) BUT only outbound mail which is being sent to other office 365 users.
We do not have mail on office 365, only on-premise hence the reason why we are flabbergasted to why the mail we are sending out would be displaying on the office 365 message tracer.
To further clarify, we are only seeing addresses in the office 365 message trace which belong to recipients whom use office 365 for their mail.
Hope this makes sense.
getting messy O365 users to another O365 you mean?
You mentioned if they send email using their MS Outlook Client.
I'd suggest you to send another email to the same recipient but using OWA
There may have been an office 365 connector in Outlook.
Where Technology Meets Talent
Maybe you are looking for
-
Hi , I have telephony setup running on CUCM 9.x integrated with UCCX 9.x. Everything working fine and I can generate the Historical reports. I have some doubts for generating the reports which is mentioned below. 1. Need to generate the agents aband
-
Time Warp Effects in Premiere Pro CS6
Enabled Time Warp Effects in Premiere CS6: Ctrl+F12, TimeWarpFilterEnabled > true. http://translate.google.ru/translate?sl=ru&tl=en&js=n&prev=_t&hl=ru&ie=UTF-8&eotf=1&u=http %3A%2F%2Fwww.efxi.ru%2Fmore%2Fpremiere_pro_cs6_time_warp.html
-
Please help me, i can't watch videos online with my n8. It says 'cannot connect to server'what should i do? Please help me.
-
KeyPressed and KeyReleased on canvas
Dear programmers I'm nearing the final stages of my remote desktop pet project but have a few small issues. One of them is that I can't seem to capture key events when the cursor is over the canvas. My system is in 2 parts. 1 - Server which listens t
-
Purchase cannotbe completed contact iTunes store support to complete this transaction!!! Bought a 15$ iTunes card and have purchased apps and have aprox 7$ left that I cannot use. WHY???