In reply to n347:
This link may be useful for you.
https://verificationacademy.com/forums/uvm/sending-data-monitor-sequence
Alternatively, you can use uvm_queue#(seq_item) together with uvm_pool.
In monitor:
typedef uvm_object_string_pool #(uvm_queue#(seq_item)) uvm_queue_pool;
uvm_queue#(seq_item) queue = uvm_queue_pool::get_global("key");
queue.push_back(item);
In your sequence, you get the queue from the same key and check how many items are existed in the queue, then you can do whatever you want.
typedef uvm_object_string_pool #(uvm_queue#(seq_item)) uvm_queue_pool;
uvm_queue#(seq_item) queue = uvm_queue_pool::get_global("key");
if(queue.size() > 100) begin
// Do something
end